ZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vQ29kaW5nR3VpZGVsaW5lcyBiL0RvY3VtZW50YXRpb24vQ29kaW5nR3VpZGVsaW5lcwppbmRleCBmNDVkYjViLi5lZDRlNDQzIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL0NvZGluZ0d1aWRlbGluZXMKKysrIGIvRG9jdW1lbnRhdGlvbi9Db2RpbmdHdWlkZWxpbmVzCkBAIC03NSw3ICs3NSw3IEBACiAKICAtIElmIHlvdSB3YW50IHRvIGZpbmQgb3V0IGlmIGEgY29tbWFuZCBpcyBhdmFpbGFibGUgb24gdGhlIHVzZXIncwogICAgJFBBVEgsIHlvdSBzaG91bGQgdXNlICd0eXBlIDxjb21tYW5kPicsIGluc3RlYWQgb2YgJ3doaWNoIDxjb21tYW5kPicuCi0gICBUaGUgb3V0cHV0IG9mICd3aGljaCcgaXMgbm90IG1hY2hpbmUgcGFyc2VhYmxlIGFuZCBpdHMgZXhpdCBjb2RlCisgICBUaGUgb3V0cHV0IG9mICd3aGljaCcgaXMgbm90IG1hY2hpbmUgcGFyc2FibGUgYW5kIGl0cyBleGl0IGNvZGUKICAgIGlzIG5vdCByZWxpYWJsZSBhY3Jvc3MgcGxhdGZvcm1zLgogCiAgLSBXZSB1c2UgUE9TSVggY29tcGxpYW50IHBhcmFtZXRlciBzdWJzdGl0dXRpb25zIGFuZCBhdm9pZCBiYXNoaXNtczsKQEAgLTIwMyw3ICsyMDMsNyBAQAogICAgLiBzaW5jZSBlYXJseSAyMDEyIHdpdGggZTEzMjcwMjNlYSwgd2UgaGF2ZSBiZWVuIHVzaW5nIGFuIGVudW0KICAgICAgZGVmaW5pdGlvbiB3aG9zZSBsYXN0IGVsZW1lbnQgaXMgZm9sbG93ZWQgYnkgYSBjb21tYS4gIFRoaXMsIGxpa2UKICAgICAgYW4gYXJyYXkgaW5pdGlhbGl6ZXIgdGhhdCBlbmRzIHdpdGggYSB0cmFpbGluZyBjb21tYSwgY2FuIGJlIHVzZWQKLSAgICAgdG8gcmVkdWNlIHRoZSBwYXRjaCBub2lzZSB3aGVuIGFkZGluZyBhIG5ldyBpZGVudGlmZXIgYXQgdGhlIGVuZC4KKyAgICAgdG8gcmVkdWNlIHRoZSBwYXRjaCBub2lzZSB3aGVuIGFkZGluZyBhIG5ldyBpZGVudGlmaWVyIGF0IHRoZSBlbmQuCiAKICAgIC4gc2luY2UgbWlkIDIwMTcgd2l0aCBjYmMwZjgxZCwgd2UgaGF2ZSBiZWVuIHVzaW5nIGRlc2lnbmF0ZWQKICAgICAgaW5pdGlhbGl6ZXJzIGZvciBzdHJ1Y3QgKGUuZy4gInN0cnVjdCB0IHYgPSB7IC52YWwgPSAnYScgfTsiKS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9Eb2N1bWVudGF0aW9uL01ha2VmaWxlCmluZGV4IDA2ZDg1YWQuLjhmZTgyOWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIGIvRG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpAQCAtNzcsNiArNzcsNyBAQAogU1BfQVJUSUNMRVMgKz0gJChBUElfRE9DUykKIAogVEVDSF9ET0NTICs9IE15Rmlyc3RDb250cmlidXRpb24KK1RFQ0hfRE9DUyArPSBNeUZpcnN0T2JqZWN0V2FsawogVEVDSF9ET0NTICs9IFN1Ym1pdHRpbmdQYXRjaGVzCiBURUNIX0RPQ1MgKz0gdGVjaG5pY2FsL2hhc2gtZnVuY3Rpb24tdHJhbnNpdGlvbgogVEVDSF9ET0NTICs9IHRlY2huaWNhbC9odHRwLXByb3RvY29sCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL015Rmlyc3RDb250cmlidXRpb24udHh0IGIvRG9jdW1lbnRhdGlvbi9NeUZpcnN0Q29udHJpYnV0aW9uLnR4dAppbmRleCA1ZTliODA4Li5iNTU4MzdlIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL015Rmlyc3RDb250cmlidXRpb24udHh0CisrKyBiL0RvY3VtZW50YXRpb24vTXlGaXJzdENvbnRyaWJ1dGlvbi50eHQKQEAgLTM4LDYgKzM4LDI2IEBACiAkIGNkIGdpdAogLS0tLQogCitbW2RlcGVuZGVuY2llc11dCis9PT0gSW5zdGFsbGluZyBEZXBlbmRlbmNpZXMKKworVG8gYnVpbGQgR2l0IGZyb20gc291cmNlLCB5b3UgbmVlZCB0byBoYXZlIGEgaGFuZGZ1bCBvZiBkZXBlbmRlbmNpZXMgaW5zdGFsbGVkCitvbiB5b3VyIHN5c3RlbS4gRm9yIGEgaGludCBvZiB3aGF0J3MgbmVlZGVkLCB5b3UgY2FuIHRha2UgYSBsb29rIGF0CitgSU5TVEFMTGAsIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIHNlY3Rpb24gYWJvdXQgR2l0J3MgZGVwZW5kZW5jaWVzIG9uCitleHRlcm5hbCBwcm9ncmFtcyBhbmQgbGlicmFyaWVzLiBUaGF0IGRvY3VtZW50IG1lbnRpb25zIGEgd2F5IHRvICJ0ZXN0LWRyaXZlIgorb3VyIGZyZXNobHkgYnVpbHQgR2l0IHdpdGhvdXQgaW5zdGFsbGluZzsgdGhhdCdzIHRoZSBtZXRob2Qgd2UnbGwgYmUgdXNpbmcgaW4KK3RoaXMgdHV0b3JpYWwuCisKK01ha2Ugc3VyZSB0aGF0IHlvdXIgZW52aXJvbm1lbnQgaGFzIGV2ZXJ5dGhpbmcgeW91IG5lZWQgYnkgYnVpbGRpbmcgeW91ciBicmFuZAorbmV3IGNsb25lIG9mIEdpdCBmcm9tIHRoZSBhYm92ZSBzdGVwOgorCistLS0tCiskIG1ha2UKKy0tLS0KKworTk9URTogVGhlIEdpdCBidWlsZCBpcyBwYXJhbGxlbGl6YWJsZS4gYC1qI2AgaXMgbm90IGluY2x1ZGVkIGFib3ZlIGJ1dCB5b3UgY2FuCit1c2UgaXQgYXMgeW91IHByZWZlciwgaGVyZSBhbmQgZWxzZXdoZXJlLgorCiBbW2lkZW50aWZ5LXByb2JsZW1dXQogPT09IElkZW50aWZ5IFByb2JsZW0gdG8gU29sdmUKIApAQCAtMTM4LDkgKzE1OCw2IEBACiBgREVWRUxPUEVSYCBmbGFnOyBpZiB0aGVyZSdzIHNvbWUgcmVhc29uIGl0IGRvZXNuJ3Qgd29yayBmb3IgeW91LCB5b3UgY2FuIHR1cm4KIGl0IG9mZiwgYnV0IGl0J3MgYSBnb29kIGlkZWEgdG8gbWVudGlvbiB0aGUgcHJvYmxlbSB0byB0aGUgbWFpbGluZyBsaXN0LgogCi1OT1RFOiBUaGUgR2l0IGJ1aWxkIGlzIHBhcmFsbGVsaXphYmxlLiBgLWojYCBpcyBub3QgaW5jbHVkZWQgYWJvdmUgYnV0IHlvdSBjYW4KLXVzZSBpdCBhcyB5b3UgcHJlZmVyLCBoZXJlIGFuZCBlbHNld2hlcmUuCi0KIEdyZWF0LCBub3cgeW91ciBuZXcgY29tbWFuZCBidWlsZHMgaGFwcGlseSBvbiBpdHMgb3duLiBCdXQgbm9ib2R5IGludm9rZXMgaXQuCiBMZXQncyBjaGFuZ2UgdGhhdC4KIApAQCAtNTM0LDYgKzU1MSwyOCBAQAogYSBmbGFnLikgYHBhcnNlX29wdGlvbnMoKWAgd2lsbCB0ZXJtaW5hdGUgcGFyc2luZyB3aGVuIGl0IHJlYWNoZXMgYC0tYCBhbmQgZ2l2ZQogeW91IHRoZSByZXN0IG9mIHRoZSBvcHRpb25zIGFmdGVyd2FyZHMsIHVudG91Y2hlZC4KIAorTm93IHRoYXQgeW91IGhhdmUgYSB1c2FnZSBoaW50LCB5b3UgY2FuIHRlYWNoIEdpdCBob3cgdG8gc2hvdyBpdCBpbiB0aGUgZ2VuZXJhbAorY29tbWFuZCBsaXN0IHNob3duIGJ5IGBnaXQgaGVscCBnaXRgIG9yIGBnaXQgaGVscCAtYWAsIHdoaWNoIGlzIGdlbmVyYXRlZCBmcm9tCitgY29tbWFuZC1saXN0LnR4dGAuIEZpbmQgdGhlIGxpbmUgZm9yICdnaXQtcHVsbCcgc28geW91IGNhbiBhZGQgeW91ciAnZ2l0LXBzdWgnCitsaW5lIGFib3ZlIGl0IGluIGFscGhhYmV0aWNhbCBvcmRlci4gTm93LCB3ZSBjYW4gYWRkIHNvbWUgYXR0cmlidXRlcyBhYm91dCB0aGUKK2NvbW1hbmQgd2hpY2ggaW1wYWN0cyB3aGVyZSBpdCBzaG93cyB1cCBpbiB0aGUgYWZvcmVtZW50aW9uZWQgaGVscCBjb21tYW5kcy4gVGhlCit0b3Agb2YgYGNvbW1hbmQtbGlzdC50eHRgIHNoYXJlcyBzb21lIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgZWFjaCBhdHRyaWJ1dGUKK21lYW5zOyBpbiB0aG9zZSBoZWxwIHBhZ2VzLCB0aGUgY29tbWFuZHMgYXJlIHNvcnRlZCBhY2NvcmRpbmcgdG8gdGhlc2UKK2F0dHJpYnV0ZXMuIGBnaXQgcHN1aGAgaXMgdXNlci1mYWNpbmcsIG9yIHBvcmNlbGFpbiAtIHNvIHdlIHdpbGwgbWFyayBpdCBhcworIm1haW5wb3JjZWxhaW4iLiBGb3IgIm1haW5wb3JjZWxhaW4iIGNvbW1hbmRzLCB0aGUgY29tbWVudHMgYXQgdGhlIHRvcCBvZgorYGNvbW1hbmQtbGlzdC50eHRgIGluZGljYXRlIHdlIGNhbiBhbHNvIG9wdGlvbmFsbHkgYWRkIGFuIGF0dHJpYnV0ZSBmcm9tIGFub3RoZXIKK2xpc3Q7IHNpbmNlIGBnaXQgcHN1aGAgc2hvd3Mgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNlcidzIHdvcmtzcGFjZSBidXQKK2RvZXNuJ3QgbW9kaWZ5IGFueXRoaW5nLCBsZXQncyBtYXJrIGl0IGFzICJpbmZvIi4gTWFrZSBzdXJlIHRvIGtlZXAgeW91cgorYXR0cmlidXRlcyBpbiB0aGUgc2FtZSBzdHlsZSBhcyB0aGUgcmVzdCBvZiBgY29tbWFuZC1saXN0LnR4dGAgdXNpbmcgc3BhY2VzIHRvCithbGlnbiBhbmQgZGVsaW5lYXRlIHRoZW06CisKKy0tLS0KK2dpdC1wcnVuZS1wYWNrZWQgICAgICAgICAgICAgICAgICAgICAgICBwbHVtYmluZ21hbmlwdWxhdG9ycworZ2l0LXBzdWggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5wb3JjZWxhaW4JCWluZm8KK2dpdC1wdWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWlucG9yY2VsYWluICAgICAgICAgICByZW1vdGUKK2dpdC1wdXNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWlucG9yY2VsYWluICAgICAgICAgICByZW1vdGUKKy0tLS0KKwogQnVpbGQgYWdhaW4uIE5vdywgd2hlbiB5b3UgcnVuIHdpdGggYC1oYCwgeW91IHNob3VsZCBzZWUgeW91ciB1c2FnZSBwcmludGVkIGFuZAogeW91ciBjb21tYW5kIHRlcm1pbmF0ZWQgYmVmb3JlIGFueXRoaW5nIGVsc2UgaW50ZXJlc3RpbmcgaGFwcGVucy4gR3JlYXQhCiAKQEAgLTc0Niw2ICs3ODUsMTQgQEAKIGJ1dCB5b3Ugd2lsbCBub3QgYmUgYWJsZSB0byBgL3N1Ym1pdGAgeW91ciBjaGFuZ2VzIHVudGlsIHNvbWVvbmUgYWxsb3dzIHlvdSB0bwogdXNlIHRoZSB0b29sLgogCitOT1RFOiBZb3UgY2FuIHR5cGljYWxseSBmaW5kIHNvbWVvbmUgd2hvIGNhbiBgL2FsbG93YCB5b3Ugb24gR2l0R2l0R2FkZ2V0IGJ5CitlaXRoZXIgZXhhbWluaW5nIHJlY2VudCBwdWxsIHJlcXVlc3RzIHdoZXJlIHNvbWVvbmUgaGFzIGJlZW4gZ3JhbnRlZCBgL2FsbG93YAorKGh0dHBzOi8vZ2l0aHViLmNvbS9naXRnaXRnYWRnZXQvZ2l0L3B1bGxzP3V0Zjg9JUUyJTlDJTkzJnE9aXMlM0FwcitpcyUzQW9wZW4rJTIyJTJGYWxsb3clMjJbU2VhcmNoOgoraXM6cHIgaXM6b3BlbiAiL2FsbG93Il0pLCBpbiB3aGljaCBjYXNlIGJvdGggdGhlIGF1dGhvciBhbmQgdGhlIHBlcnNvbiB3aG8KK2dyYW50ZWQgdGhlIGAvYWxsb3dgIGNhbiBub3cgYC9hbGxvd2AgeW91LCBvciBieSBpbnF1aXJpbmcgb24gdGhlCitodHRwczovL3dlYmNoYXQuZnJlZW5vZGUubmV0LyNnaXQtZGV2ZWxbI2dpdC1kZXZlbF0gSVJDIGNoYW5uZWwgb24gRnJlZW5vZGUKK2xpbmtpbmcgeW91ciBwdWxsIHJlcXVlc3QgYW5kIGFza2luZyBmb3Igc29tZW9uZSB0byBgL2FsbG93YCB5b3UuCisKIElmIHRoZSBDSSBmYWlscywgeW91IGNhbiB1cGRhdGUgeW91ciBjaGFuZ2VzIHdpdGggYGdpdCByZWJhc2UgLWlgIGFuZCBwdXNoIHlvdXIKIGJyYW5jaCBhZ2FpbjoKIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9NeUZpcnN0T2JqZWN0V2Fsay50eHQgYi9Eb2N1bWVudGF0aW9uL015Rmlyc3RPYmplY3RXYWxrLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDI0ZGFlCi0tLSAvZGV2L251bGwKKysrIGIvRG9jdW1lbnRhdGlvbi9NeUZpcnN0T2JqZWN0V2Fsay50eHQKQEAgLTAsMCArMSw5MDYgQEAKKz0gTXkgRmlyc3QgT2JqZWN0IFdhbGsKKworPT0gV2hhdCdzIGFuIE9iamVjdCBXYWxrPworCitUaGUgb2JqZWN0IHdhbGsgaXMgYSBrZXkgY29uY2VwdCBpbiBHaXQgLSB0aGlzIGlzIHRoZSBwcm9jZXNzIHRoYXQgdW5kZXJwaW5zCitvcGVyYXRpb25zIGxpa2Ugb2JqZWN0IHRyYW5zZmVyIGFuZCBmc2NrLiBCZWdpbm5pbmcgZnJvbSBhIGdpdmVuIGNvbW1pdCwgdGhlCitsaXN0IG9mIG9iamVjdHMgaXMgZm91bmQgYnkgd2Fsa2luZyBwYXJlbnQgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIGNvbW1pdHMgKGNvbW1pdAorWCBiYXNlZCBvbiBjb21taXQgVykgYW5kIGNvbnRhaW5tZW50IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiBvYmplY3RzICh0cmVlIFkgaXMKK2NvbnRhaW5lZCB3aXRoaW4gY29tbWl0IFgsIGFuZCBibG9iIFogaXMgbG9jYXRlZCB3aXRoaW4gdHJlZSBZLCBnaXZpbmcgb3VyCit3b3JraW5nIHRyZWUgZm9yIGNvbW1pdCBYIHNvbWV0aGluZyBsaWtlIGB5L3oudHh0YCkuCisKK0EgcmVsYXRlZCBjb25jZXB0IGlzIHRoZSByZXZpc2lvbiB3YWxrLCB3aGljaCBpcyBmb2N1c2VkIG9uIGNvbW1pdCBvYmplY3RzIGFuZAordGhlaXIgcGFyZW50IHJlbGF0aW9uc2hpcHMgYW5kIGRvZXMgbm90IGRlbHZlIGludG8gb3RoZXIgb2JqZWN0IHR5cGVzLiBUaGUKK3JldmlzaW9uIHdhbGsgaXMgdXNlZCBmb3Igb3BlcmF0aW9ucyBsaWtlIGBnaXQgbG9nYC4KKworPT09IFJlbGF0ZWQgUmVhZGluZworCistIGBEb2N1bWVudGF0aW9uL3VzZXItbWFudWFsLnR4dGAgdW5kZXIgIkhhY2tpbmcgR2l0IiBjb250YWlucyBzb21lIGNvdmVyYWdlIG9mCisgIHRoZSByZXZpc2lvbiB3YWxrZXIgaW4gaXRzIHZhcmlvdXMgaW5jYXJuYXRpb25zLgorLSBgRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXJldmlzaW9uLXdhbGtpbmcudHh0YAorLSBodHRwczovL2VhZ2Fpbi5uZXQvYXJ0aWNsZXMvZ2l0LWZvci1jb21wdXRlci1zY2llbnRpc3RzL1tHaXQgZm9yIENvbXB1dGVyIFNjaWVudGlzdHNdCisgIGdpdmVzIGEgZ29vZCBvdmVydmlldyBvZiB0aGUgdHlwZXMgb2Ygb2JqZWN0cyBpbiBHaXQgYW5kIHdoYXQgeW91ciBvYmplY3QKKyAgd2FsayBpcyByZWFsbHkgZGVzY3JpYmluZy4KKworPT0gU2V0dGluZyBVcAorCitDcmVhdGUgYSBuZXcgYnJhbmNoIGZyb20gYG1hc3RlcmAuCisKKy0tLS0KK2dpdCBjaGVja291dCAtYiByZXZ3YWxrIG9yaWdpbi9tYXN0ZXIKKy0tLS0KKworV2UnbGwgcHV0IG91ciBmaWRkbGluZyBpbnRvIGEgbmV3IGNvbW1hbmQuIEZvciBmdW4sIGxldCdzIG5hbWUgaXQgYGdpdCB3YWxrZW5gLgorT3BlbiB1cCBhIG5ldyBmaWxlIGBidWlsdGluL3dhbGtlbi5jYCBhbmQgc2V0IHVwIHRoZSBjb21tYW5kIGhhbmRsZXI6CisKKy0tLS0KKy8qCisgKiAiZ2l0IHdhbGtlbiIKKyAqCisgKiBQYXJ0IG9mIHRoZSAiTXkgRmlyc3QgT2JqZWN0IFdhbGsiIHR1dG9yaWFsLgorICovCisKKyNpbmNsdWRlICJidWlsdGluLmgiCisKK2ludCBjbWRfd2Fsa2VuKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KQoreworCXRyYWNlX3ByaW50ZihfKCJjbWRfd2Fsa2VuIGluY29taW5nLi4uXG4iKSk7CisJcmV0dXJuIDA7Cit9CistLS0tCisKK05PVEU6IGB0cmFjZV9wcmludGYoKWAgZGlmZmVycyBmcm9tIGBwcmludGYoKWAgaW4gdGhhdCBpdCBjYW4gYmUgdHVybmVkIG9uIG9yCitvZmYgYXQgcnVudGltZS4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIHR1dG9yaWFsLCB3ZSB3aWxsIHdyaXRlIGB3YWxrZW5gIGFzCit0aG91Z2ggaXQgaXMgaW50ZW5kZWQgZm9yIHVzZSBhcyBhICJwbHVtYmluZyIgY29tbWFuZDogdGhhdCBpcywgYSBjb21tYW5kIHdoaWNoCitpcyB1c2VkIHByaW1hcmlseSBpbiBzY3JpcHRzLCByYXRoZXIgdGhhbiBpbnRlcmFjdGl2ZWx5IGJ5IGh1bWFucyAoYSAicG9yY2VsYWluIgorY29tbWFuZCkuIFNvIHdlIHdpbGwgc2VuZCBvdXIgZGVidWcgb3V0cHV0IHRvIGB0cmFjZV9wcmludGYoKWAgaW5zdGVhZC4gV2hlbgorcnVubmluZywgZW5hYmxlIHRyYWNlIG91dHB1dCBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgR0lUX1RSQUNFYC4KKworQWRkIHVzYWdlIHRleHQgYW5kIGAtaGAgaGFuZGxpbmcsIGxpa2UgYWxsIHN1YmNvbW1hbmRzIHNob3VsZCBjb25zaXN0ZW50bHkgZG8KKyhvdXIgdGVzdCBzdWl0ZSB3aWxsIG5vdGljZSBhbmQgY29tcGxhaW4gaWYgeW91IGZhaWwgdG8gZG8gc28pLgorCistLS0tCitpbnQgY21kX3dhbGtlbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKK3sKKwljb25zdCBjaGFyICogY29uc3Qgd2Fsa2VuX3VzYWdlW10gPSB7CisJCU5fKCJnaXQgd2Fsa2VuIiksCisJCU5VTEwsCisJfQorCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geworCQlPUFRfRU5EKCkKKwl9OworCisJYXJnYyA9IHBhcnNlX29wdGlvbnMoYXJnYywgYXJndiwgcHJlZml4LCBvcHRpb25zLCB3YWxrZW5fdXNhZ2UsIDApOworCisJLi4uCit9CistLS0tCisKK0Fsc28gYWRkIHRoZSByZWxldmFudCBsaW5lIGluIGBidWlsdGluLmhgIG5lYXIgYGNtZF93aGF0Y2hhbmdlZCgpYDoKKworLS0tLQoraW50IGNtZF93YWxrZW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpOworLS0tLQorCitJbmNsdWRlIHRoZSBjb21tYW5kIGluIGBnaXQuY2AgaW4gYGNvbW1hbmRzW11gIG5lYXIgdGhlIGVudHJ5IGZvciBgd2hhdGNoYW5nZWRgLAorbWFpbnRhaW5pbmcgYWxwaGFiZXRpY2FsIG9yZGVyaW5nOgorCistLS0tCit7ICJ3YWxrZW4iLCBjbWRfd2Fsa2VuLCBSVU5fU0VUVVAgfSwKKy0tLS0KKworQWRkIGl0IHRvIHRoZSBgTWFrZWZpbGVgIG5lYXIgdGhlIGxpbmUgZm9yIGBidWlsdGluL3dvcmt0cmVlLm9gOgorCistLS0tCitCVUlMVElOX09CSlMgKz0gYnVpbHRpbi93YWxrZW4ubworLS0tLQorCitCdWlsZCBhbmQgdGVzdCBvdXQgeW91ciBjb21tYW5kLCB3aXRob3V0IGZvcmdldHRpbmcgdG8gZW5zdXJlIHRoZSBgREVWRUxPUEVSYAorZmxhZyBpcyBzZXQsIGFuZCB3aXRoIGBHSVRfVFJBQ0VgIGVuYWJsZWQgc28gdGhlIGRlYnVnIG91dHB1dCBjYW4gYmUgc2VlbjoKKworLS0tLQorJCBlY2hvIERFVkVMT1BFUj0xID4+Y29uZmlnLm1haworJCBtYWtlCiskIEdJVF9UUkFDRT0xIC4vYmluLXdyYXBwZXJzL2dpdCB3YWxrZW4KKy0tLS0KKworTk9URTogRm9yIGEgbW9yZSBleGhhdXN0aXZlIG92ZXJ2aWV3IG9mIHRoZSBuZXcgY29tbWFuZCBwcm9jZXNzLCB0YWtlIGEgbG9vayBhdAorYERvY3VtZW50YXRpb24vTXlGaXJzdENvbnRyaWJ1dGlvbi50eHRgLgorCitOT1RFOiBBIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgYXQKK2h0dHBzOi8vZ2l0aHViLmNvbS9uYXNhbXVmZmluL2dpdC90cmVlL3JldndhbGsuCisKKz09PSBgc3RydWN0IHJldl9jbWRsaW5lX2luZm9gCisKK1RoZSBkZWZpbml0aW9uIG9mIGBzdHJ1Y3QgcmV2X2NtZGxpbmVfaW5mb2AgY2FuIGJlIGZvdW5kIGluIGByZXZpc2lvbi5oYC4KKworVGhpcyBzdHJ1Y3QgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgYHJldl9pbmZvYCBzdHJ1Y3QgYW5kIGlzIHVzZWQgdG8gcmVmbGVjdAorcGFyYW1ldGVycyBwcm92aWRlZCBieSB0aGUgdXNlciBvdmVyIHRoZSBDTEkuCisKK2BucmAgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGByZXZfY21kbGluZV9lbnRyeWAgcHJlc2VudCBpbiB0aGUgYXJyYXkuCisKK2BhbGxvY2AgaXMgdXNlZCBieSB0aGUgYEFMTE9DX0dST1dgIG1hY3JvLiBDaGVjaworYERvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1hbGxvY2F0aW9uLWdyb3dpbmcudHh0YCAtIHRoaXMgdmFyaWFibGUgaXMgdXNlZCB0bwordHJhY2sgdGhlIGFsbG9jYXRlZCBzaXplIG9mIHRoZSBsaXN0LgorCitQZXIgZW50cnksIHdlIGZpbmQ6CisKK2BpdGVtYCBpcyB0aGUgb2JqZWN0IHByb3ZpZGVkIHVwb24gd2hpY2ggdG8gYmFzZSB0aGUgb2JqZWN0IHdhbGsuIEl0ZW1zIGluIEdpdAorY2FuIGJlIGJsb2JzLCB0cmVlcywgY29tbWl0cywgb3IgdGFncy4gKFNlZSBgRG9jdW1lbnRhdGlvbi9naXR0dXRvcmlhbC0yLnR4dGAuKQorCitgbmFtZWAgaXMgdGhlIG9iamVjdCBJRCAoT0lEKSBvZiB0aGUgb2JqZWN0IC0gYSBoZXggc3RyaW5nIHlvdSBtYXkgYmUgZmFtaWxpYXIKK3dpdGggZnJvbSB1c2luZyBHaXQgdG8gb3JnYW5pemUgeW91ciBzb3VyY2UgaW4gdGhlIHBhc3QuIENoZWNrIHRoZSB0dXRvcmlhbAorbWVudGlvbmVkIGFib3ZlIHRvd2FyZHMgdGhlIHRvcCBmb3IgYSBkaXNjdXNzaW9uIG9mIHdoZXJlIHRoZSBPSUQgY2FuIGNvbWUKK2Zyb20uCisKK2B3aGVuY2VgIGluZGljYXRlcyBzb21lIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgdG8gZG8gd2l0aCB0aGUgcGFyZW50cyBvZiB0aGUKK3NwZWNpZmllZCBvYmplY3QuIFdlJ2xsIGV4cGxvcmUgdGhpcyBmbGFnIG1vcmUgbGF0ZXIgb247IHRha2UgYSBsb29rIGF0CitgRG9jdW1lbnRhdGlvbi9yZXZpc2lvbnMudHh0YCB0byBnZXQgYW4gaWRlYSBvZiB3aGF0IGNvdWxkIHNldCB0aGUgYHdoZW5jZWAKK3ZhbHVlLgorCitgZmxhZ3NgIGFyZSB1c2VkIHRvIGhpbnQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcmV2aXNpb24gd2FsayBhbmQgYXJlIHRoZSBmaXJzdAorYmxvY2sgdW5kZXIgdGhlIGAjaW5jbHVkZWBzIGluIGByZXZpc2lvbi5oYC4gVGhlIG1vc3QgbGlrZWx5IG9uZXMgdG8gYmUgc2V0IGluCit0aGUgYHJldl9jbWRsaW5lX2luZm9gIGFyZSBgVU5JTlRFUkVTVElOR2AgYW5kIGBCT1RUT01gLCBidXQgdGhlc2Ugc2FtZSBmbGFncworY2FuIGJlIHVzZWQgZHVyaW5nIHRoZSB3YWxrLCBhcyB3ZWxsLgorCis9PT0gYHN0cnVjdCByZXZfaW5mb2AKKworVGhpcyBvbmUgaXMgcXVpdGUgYSBiaXQgbG9uZ2VyLCBhbmQgbWFueSBmaWVsZHMgYXJlIG9ubHkgdXNlZCBkdXJpbmcgdGhlIHdhbGsKK2J5IGByZXZpc2lvbi5jYCAtIG5vdCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE1vc3Qgb2YgdGhlIGNvbmZpZ3VyYWJsZSBmbGFncyBpbgorYHN0cnVjdCByZXZfaW5mb2AgaGF2ZSBhIG1pcnJvciBpbiBgRG9jdW1lbnRhdGlvbi9yZXYtbGlzdC1vcHRpb25zLnR4dGAuIEl0J3MgYQorZ29vZCBpZGVhIHRvIHRha2Ugc29tZSB0aW1lIGFuZCByZWFkIHRocm91Z2ggdGhhdCBkb2N1bWVudC4KKworPT0gQmFzaWMgQ29tbWl0IFdhbGsKKworRmlyc3QsIGxldCdzIHNlZSBpZiB3ZSBjYW4gcmVwbGljYXRlIHRoZSBvdXRwdXQgb2YgYGdpdCBsb2cgLS1vbmVsaW5lYC4gV2UnbGwKK3JlZmVyIGJhY2sgdG8gdGhlIGltcGxlbWVudGF0aW9uIGZyZXF1ZW50bHkgdG8gZGlzY292ZXIgbm9ybXMgd2hlbiBwZXJmb3JtaW5nCithbiBvYmplY3Qgd2FsayBvZiBvdXIgb3duLgorCitUbyBkbyBzbywgd2UnbGwgZmlyc3QgZmluZCBhbGwgdGhlIGNvbW1pdHMsIGluIG9yZGVyLCB3aGljaCBwcmVjZWRlZCB0aGUgY3VycmVudAorY29tbWl0LiBXZSdsbCBleHRyYWN0IHRoZSBuYW1lIGFuZCBzdWJqZWN0IG9mIHRoZSBjb21taXQgZnJvbSBlYWNoLgorCitJZGVhbGx5LCB3ZSB3aWxsIGFsc28gYmUgYWJsZSB0byBmaW5kIG91dCB3aGljaCBvbmVzIGFyZSBjdXJyZW50bHkgYXQgdGhlIHRpcCBvZgordmFyaW91cyBicmFuY2hlcy4KKworPT09IFNldHRpbmcgVXAKKworUHJlcGFyaW5nIGZvciB5b3VyIG9iamVjdCB3YWxrIGhhcyBzb21lIGRpc3RpbmN0IHN0YWdlcy4KKworMS4gUGVyZm9ybSBkZWZhdWx0IHNldHVwIGZvciB0aGlzIG1vZGUsIGFuZCBvdGhlcnMgd2hpY2ggbWF5IGJlIGludm9rZWQuCisyLiBDaGVjayBjb25maWd1cmF0aW9uIGZpbGVzIGZvciByZWxldmFudCBzZXR0aW5ncy4KKzMuIFNldCB1cCB0aGUgYHJldl9pbmZvYCBzdHJ1Y3QuCis0LiBUd2VhayB0aGUgaW5pdGlhbGl6ZWQgYHJldl9pbmZvYCB0byBzdWl0IHRoZSBjdXJyZW50IHdhbGsuCis1LiBQcmVwYXJlIHRoZSBgcmV2X2luZm9gIGZvciB0aGUgd2Fsay4KKzYuIEl0ZXJhdGUgb3ZlciB0aGUgb2JqZWN0cywgcHJvY2Vzc2luZyBlYWNoIG9uZS4KKworPT09PSBEZWZhdWx0IFNldHVwcworCitCZWZvcmUgZXhhbWluaW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMgd2hpY2ggbWF5IG1vZGlmeSBjb21tYW5kIGJlaGF2aW9yLCBzZXQgdXAKK2RlZmF1bHQgc3RhdGUgZm9yIHN3aXRjaGVzIG9yIG9wdGlvbnMgeW91ciBjb21tYW5kIG1heSBoYXZlLiBJZiB5b3VyIGNvbW1hbmQKK3V0aWxpemVzIG90aGVyIEdpdCBjb21wb25lbnRzLCBhc2sgdGhlbSB0byBzZXQgdXAgdGhlaXIgZGVmYXVsdCBzdGF0ZXMgYXMgd2VsbC4KK0ZvciBpbnN0YW5jZSwgYGdpdCBsb2dgIHRha2VzIGFkdmFudGFnZSBvZiBgZ3JlcGAgYW5kIGBkaWZmYCBmdW5jdGlvbmFsaXR5LCBzbworaXRzIGBpbml0X2xvZ19kZWZhdWx0cygpYCBzZXRzIGl0cyBvd24gc3RhdGUgKGBkZWNvcmF0aW9uX3N0eWxlYCkgYW5kIGFza3MKK2BncmVwYCBhbmQgYGRpZmZgIHRvIGluaXRpYWxpemUgdGhlbXNlbHZlcyBieSBjYWxsaW5nIGVhY2ggb2YgdGhlaXIKK2luaXRpYWxpemF0aW9uIGZ1bmN0aW9ucy4KKworRm9yIG91ciBmaXJzdCBleGFtcGxlIHdpdGhpbiBgZ2l0IHdhbGtlbmAsIHdlIGRvbid0IGludGVuZCB0byB1c2UgYW55IG90aGVyCitjb21wb25lbnRzIHdpdGhpbiBHaXQsIGFuZCB3ZSBkb24ndCBoYXZlIGFueSBjb25maWd1cmF0aW9uIHRvIGRvLiAgSG93ZXZlciwgd2UKK21heSB3YW50IHRvIGFkZCBzb21lIGxhdGVyLCBzbyBmb3Igbm93LCB3ZSBjYW4gYWRkIGFuIGVtcHR5IHBsYWNlaG9sZGVyLiBDcmVhdGUKK2EgbmV3IGZ1bmN0aW9uIGluIGBidWlsdGluL3dhbGtlbi5jYDoKKworLS0tLQorc3RhdGljIHZvaWQgaW5pdF93YWxrZW5fZGVmYXVsdHModm9pZCkKK3sKKwkvKgorCSAqIFdlIGRvbid0IGFjdHVhbGx5IG5lZWQgdGhlIHNhbWUgY29tcG9uZW50cyBgZ2l0IGxvZ2AgZG9lczsgbGVhdmUgdGhpcworCSAqIGVtcHR5IGZvciBub3cuCisJICovCit9CistLS0tCisKK01ha2Ugc3VyZSB0byBhZGQgYSBsaW5lIGludm9raW5nIGl0IGluc2lkZSBvZiBgY21kX3dhbGtlbigpYC4KKworLS0tLQoraW50IGNtZF93YWxrZW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJaW5pdF93YWxrZW5fZGVmYXVsdHMoKTsKK30KKy0tLS0KKworPT09PSBDb25maWd1cmluZyBGcm9tIGAuZ2l0Y29uZmlnYAorCitOZXh0LCB3ZSBzaG91bGQgaGF2ZSBhIGxvb2sgYXQgYW55IHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgKGkuZS4sCitzZXR0aW5ncyByZWFkYWJsZSBhbmQgc2V0dGFibGUgZnJvbSBgZ2l0IGNvbmZpZ2ApLiBUaGlzIGlzIGRvbmUgYnkgcHJvdmlkaW5nIGEKK2NhbGxiYWNrIHRvIGBnaXRfY29uZmlnKClgOyB3aXRoaW4gdGhhdCBjYWxsYmFjaywgeW91IGNhbiBhbHNvIGludm9rZSBtZXRob2RzCitmcm9tIG90aGVyIGNvbXBvbmVudHMgeW91IG1heSBuZWVkIHRoYXQgbmVlZCB0byBpbnRlcmNlcHQgdGhlc2Ugb3B0aW9ucy4gWW91cgorY2FsbGJhY2sgd2lsbCBiZSBpbnZva2VkIG9uY2UgcGVyIGVhY2ggY29uZmlndXJhdGlvbiB2YWx1ZSB3aGljaCBHaXQga25vd3MgYWJvdXQKKyhnbG9iYWwsIGxvY2FsLCB3b3JrdHJlZSwgZXRjLikuCisKK1NpbWlsYXJseSB0byB0aGUgZGVmYXVsdCB2YWx1ZXMsIHdlIGRvbid0IGhhdmUgYW55dGhpbmcgdG8gZG8gaGVyZSB5ZXQKK291cnNlbHZlczsgaG93ZXZlciwgd2Ugc2hvdWxkIGNhbGwgYGdpdF9kZWZhdWx0X2NvbmZpZygpYCBpZiB3ZSBhcmVuJ3QgY2FsbGluZworYW55IG90aGVyIGV4aXN0aW5nIGNvbmZpZyBjYWxsYmFja3MuCisKK0FkZCBhIG5ldyBmdW5jdGlvbiB0byBgYnVpbHRpbi93YWxrZW4uY2A6CisKKy0tLS0KK3N0YXRpYyBpbnQgZ2l0X3dhbGtlbl9jb25maWcoY29uc3QgY2hhciAqdmFyLCBjb25zdCBjaGFyICp2YWx1ZSwgdm9pZCAqY2IpCit7CisJLyoKKwkgKiBGb3Igbm93LCB3ZSBkb24ndCBoYXZlIGFueSBjdXN0b20gY29uZmlndXJhdGlvbiwgc28gZmFsbCBiYWNrIHRvCisJICogdGhlIGRlZmF1bHQgY29uZmlnLgorCSAqLworCXJldHVybiBnaXRfZGVmYXVsdF9jb25maWcodmFyLCB2YWx1ZSwgY2IpOworfQorLS0tLQorCitNYWtlIHN1cmUgdG8gaW52b2tlIGBnaXRfY29uZmlnKClgIHdpdGggaXQgaW4geW91ciBgY21kX3dhbGtlbigpYDoKKworLS0tLQoraW50IGNtZF93YWxrZW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJLi4uCisKKwlnaXRfY29uZmlnKGdpdF93YWxrZW5fY29uZmlnLCBOVUxMKTsKKworCS4uLgorfQorLS0tLQorCis9PT09IFNldHRpbmcgVXAgYHJldl9pbmZvYAorCitOb3cgdGhhdCB3ZSd2ZSBnYXRoZXJlZCBleHRlcm5hbCBjb25maWd1cmF0aW9uIGFuZCBvcHRpb25zLCBpdCdzIHRpbWUgdG8KK2luaXRpYWxpemUgdGhlIGByZXZfaW5mb2Agb2JqZWN0IHdoaWNoIHdlIHdpbGwgdXNlIHRvIHBlcmZvcm0gdGhlIHdhbGsuIFRoaXMgaXMKK3R5cGljYWxseSBkb25lIGJ5IGNhbGxpbmcgYHJlcG9faW5pdF9yZXZpc2lvbnMoKWAgd2l0aCB0aGUgcmVwb3NpdG9yeSB5b3UgaW50ZW5kCit0byB0YXJnZXQsIGFzIHdlbGwgYXMgdGhlIGBwcmVmaXhgIGFyZ3VtZW50IG9mIGBjbWRfd2Fsa2VuYCBhbmQgeW91ciBgcmV2X2luZm9gCitzdHJ1Y3QuCisKK0FkZCB0aGUgYHN0cnVjdCByZXZfaW5mb2AgYW5kIHRoZSBgcmVwb19pbml0X3JldmlzaW9ucygpYCBjYWxsOgorLS0tLQoraW50IGNtZF93YWxrZW4oaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCit7CisJLyogVGhpcyBjYW4gZ28gd2hlcmV2ZXIgeW91IGxpa2UgaW4geW91ciBkZWNsYXJhdGlvbnMuKi8KKwlzdHJ1Y3QgcmV2X2luZm8gcmV2OworCS4uLgorCisJLyogVGhpcyBzaG91bGQgZ28gYWZ0ZXIgdGhlIGdpdF9jb25maWcoKSBjYWxsLiAqLworCXJlcG9faW5pdF9yZXZpc2lvbnModGhlX3JlcG9zaXRvcnksICZyZXYsIHByZWZpeCk7CisKKwkuLi4KK30KKy0tLS0KKworPT09PSBUd2Vha2luZyBgcmV2X2luZm9gIEZvciB0aGUgV2FsaworCitXZSdyZSBnZXR0aW5nIGNsb3NlLCBidXQgd2UncmUgc3RpbGwgbm90IHF1aXRlIHJlYWR5IHRvIGdvLiBOb3cgdGhhdCBgcmV2YCBpcworaW5pdGlhbGl6ZWQsIHdlIGNhbiBtb2RpZnkgaXQgdG8gZml0IG91ciBuZWVkcy4gVGhpcyBpcyB1c3VhbGx5IGRvbmUgd2l0aGluIGEKK2hlbHBlciBmb3IgY2xhcml0eSwgc28gbGV0J3MgYWRkIG9uZToKKworLS0tLQorc3RhdGljIHZvaWQgZmluYWxfcmV2X2luZm9fc2V0dXAoc3RydWN0IHJldl9pbmZvICpyZXYpCit7CisJLyoKKwkgKiBXZSB3YW50IHRvIG1pbWljIHRoZSBhcHBlYXJhbmNlIG9mIGBnaXQgbG9nIC0tb25lbGluZWAsIHNvIGxldCdzCisJICogZm9yY2Ugb25lbGluZSBmb3JtYXQuCisJICovCisJZ2V0X2NvbW1pdF9mb3JtYXQoIm9uZWxpbmUiLCByZXYpOworCisJLyogU3RhcnQgb3VyIG9iamVjdCB3YWxrIGF0IEhFQUQuICovCisJYWRkX2hlYWRfdG9fcGVuZGluZyhyZXYpOworfQorLS0tLQorCitbTk9URV0KKz09PT0KK0luc3RlYWQgb2YgdXNpbmcgdGhlIHNob3J0aGFuZCBgYWRkX2hlYWRfdG9fcGVuZGluZygpYCwgeW91IGNvdWxkIGRvCitzb21ldGhpbmcgbGlrZSB0aGlzOgorLS0tLQorCXN0cnVjdCBzZXR1cF9yZXZpc2lvbl9vcHQgb3B0OworCisJbWVtc2V0KCZvcHQsIDAsIHNpemVvZihvcHQpKTsKKwlvcHQuZGVmID0gIkhFQUQiOworCW9wdC5yZXZhcmdfb3B0ID0gUkVWQVJHX0NPTU1JVFRJU0g7CisJc2V0dXBfcmV2aXNpb25zKGFyZ2MsIGFyZ3YsIHJldiwgJm9wdCk7CistLS0tCitVc2luZyBhIGBzZXR1cF9yZXZpc2lvbl9vcHRgIGdpdmVzIHlvdSBmaW5lciBjb250cm9sIG92ZXIgeW91ciB3YWxrJ3Mgc3RhcnRpbmcKK3BvaW50LgorPT09PQorCitUaGVuIGxldCdzIGludm9rZSBgZmluYWxfcmV2X2luZm9fc2V0dXAoKWAgYWZ0ZXIgdGhlIGNhbGwgdG8KK2ByZXBvX2luaXRfcmV2aXNpb25zKClgOgorCistLS0tCitpbnQgY21kX3dhbGtlbihpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKK3sKKwkuLi4KKworCWZpbmFsX3Jldl9pbmZvX3NldHVwKCZyZXYpOworCisJLi4uCit9CistLS0tCisKK0xhdGVyLCB3ZSBtYXkgd2lzaCB0byBhZGQgbW9yZSBhcmd1bWVudHMgdG8gYGZpbmFsX3Jldl9pbmZvX3NldHVwKClgLiBCdXQgZm9yCitub3csIHRoaXMgaXMgYWxsIHdlIG5lZWQuCisKKz09PT0gUHJlcGFyaW5nIGByZXZfaW5mb2AgRm9yIHRoZSBXYWxrCisKK05vdyB0aGF0IGByZXZgIGlzIGFsbCBpbml0aWFsaXplZCBhbmQgY29uZmlndXJlZCwgd2UndmUgZ290IG9uZSBtb3JlIHNldHVwIHN0ZXAKK2JlZm9yZSB3ZSBnZXQgcm9sbGluZy4gV2UgY2FuIGRvIHRoaXMgaW4gYSBoZWxwZXIsIHdoaWNoIHdpbGwgYm90aCBwcmVwYXJlIHRoZQorYHJldl9pbmZvYCBmb3IgdGhlIHdhbGssIGFuZCBwZXJmb3JtIHRoZSB3YWxrIGl0c2VsZi4gTGV0J3Mgc3RhcnQgdGhlIGhlbHBlcgord2l0aCB0aGUgY2FsbCB0byBgcHJlcGFyZV9yZXZpc2lvbl93YWxrKClgLCB3aGljaCBjYW4gcmV0dXJuIGFuIGVycm9yIHdpdGhvdXQKK2R5aW5nIG9uIGl0cyBvd246CisKKy0tLS0KK3N0YXRpYyB2b2lkIHdhbGtlbl9jb21taXRfd2FsayhzdHJ1Y3QgcmV2X2luZm8gKnJldikKK3sKKwlpZiAocHJlcGFyZV9yZXZpc2lvbl93YWxrKHJldikpCisJCWRpZShfKCJyZXZpc2lvbiB3YWxrIHNldHVwIGZhaWxlZCIpKTsKK30KKy0tLS0KKworTk9URTogYGRpZSgpYCBwcmludHMgdG8gYHN0ZGVycmAgYW5kIGV4aXRzIHRoZSBwcm9ncmFtLiBTaW5jZSBpdCB3aWxsIHByaW50IHRvCitgc3RkZXJyYCBpdCdzIGxpa2VseSB0byBiZSBzZWVuIGJ5IGEgaHVtYW4sIHNvIHdlIHdpbGwgbG9jYWxpemUgaXQuCisKKz09PT0gUGVyZm9ybWluZyB0aGUgV2FsayEKKworRmluYWxseSEgV2UgYXJlIHJlYWR5IHRvIGJlZ2luIHRoZSB3YWxrIGl0c2VsZi4gTm93IHdlIGNhbiBzZWUgdGhhdCBgcmV2X2luZm9gCitjYW4gYWxzbyBiZSB1c2VkIGFzIGFuIGl0ZXJhdG9yOyB3ZSBtb3ZlIHRvIHRoZSBuZXh0IGl0ZW0gaW4gdGhlIHdhbGsgYnkgdXNpbmcKK2BnZXRfcmV2aXNpb24oKWAgcmVwZWF0ZWRseS4gQWRkIHRoZSBsaXN0ZWQgdmFyaWFibGUgZGVjbGFyYXRpb25zIGF0IHRoZSB0b3AgYW5kCit0aGUgd2FsayBsb29wIGJlbG93IHRoZSBgcHJlcGFyZV9yZXZpc2lvbl93YWxrKClgIGNhbGwgd2l0aGluIHlvdXIKK2B3YWxrZW5fY29tbWl0X3dhbGsoKWA6CisKKy0tLS0KK3N0YXRpYyB2b2lkIHdhbGtlbl9jb21taXRfd2FsayhzdHJ1Y3QgcmV2X2luZm8gKnJldikKK3sKKwlzdHJ1Y3QgY29tbWl0ICpjb21taXQ7CisJc3RydWN0IHN0cmJ1ZiBwcmV0dHlidWYgPSBTVFJCVUZfSU5JVDsKKworCS4uLgorCisJd2hpbGUgKChjb21taXQgPSBnZXRfcmV2aXNpb24ocmV2KSkpIHsKKwkJaWYgKCFjb21taXQpCisJCQljb250aW51ZTsKKworCQlzdHJidWZfcmVzZXQoJnByZXR0eWJ1Zik7CisJCXBwX2NvbW1pdF9lYXN5KENNSVRfRk1UX09ORUxJTkUsIGNvbW1pdCwgJnByZXR0eWJ1Zik7CisJCXB1dHMocHJldHR5YnVmLmJ1Zik7CisJfQorCXN0cmJ1Zl9yZWxlYXNlKCZwcmV0dHlidWYpOworfQorLS0tLQorCitOT1RFOiBgcHV0cygpYCBwcmludHMgYSBgY2hhcipgIHRvIGBzdGRvdXRgLiBTaW5jZSB0aGlzIGlzIHRoZSBwYXJ0IG9mIHRoZQorY29tbWFuZCB3ZSBleHBlY3QgdG8gYmUgbWFjaGluZS1wYXJzZWQsIHdlJ3JlIHNlbmRpbmcgaXQgZGlyZWN0bHkgdG8gc3Rkb3V0LgorCitHaXZlIGl0IGEgc2hvdC4KKworLS0tLQorJCBtYWtlCiskIC4vYmluLXdyYXBwZXJzL2dpdCB3YWxrZW4KKy0tLS0KKworWW91IHNob3VsZCBzZWUgYWxsIG9mIHRoZSBzdWJqZWN0IGxpbmVzIG9mIGFsbCB0aGUgY29tbWl0cyBpbgoreW91ciB0cmVlJ3MgaGlzdG9yeSwgaW4gb3JkZXIsIGVuZGluZyB3aXRoIHRoZSBpbml0aWFsIGNvbW1pdCwgIkluaXRpYWwgcmV2aXNpb24KK29mICJnaXQiLCB0aGUgaW5mb3JtYXRpb24gbWFuYWdlciBmcm9tIGhlbGwiLiBDb25ncmF0dWxhdGlvbnMhIFlvdSd2ZSB3cml0dGVuCit5b3VyIGZpcnN0IHJldmlzaW9uIHdhbGsuIFlvdSBjYW4gcGxheSB3aXRoIHByaW50aW5nIHNvbWUgYWRkaXRpb25hbCBmaWVsZHMKK2Zyb20gZWFjaCBjb21taXQgaWYgeW91J3JlIGN1cmlvdXM7IGhhdmUgYSBsb29rIGF0IHRoZSBmdW5jdGlvbnMgYXZhaWxhYmxlIGluCitgY29tbWl0LmhgLgorCis9PT0gQWRkaW5nIGEgRmlsdGVyCisKK05leHQsIGxldCdzIHRyeSB0byBmaWx0ZXIgdGhlIGNvbW1pdHMgd2Ugc2VlIGJhc2VkIG9uIHRoZWlyIGF1dGhvci4gVGhpcyBpcworZXF1aXZhbGVudCB0byBydW5uaW5nIGBnaXQgbG9nIC0tYXV0aG9yPTxwYXR0ZXJuPmAuIFdlIGNhbiBhZGQgYSBmaWx0ZXIgYnkKK21vZGlmeWluZyBgcmV2X2luZm8uZ3JlcF9maWx0ZXJgLCB3aGljaCBpcyBhIGBzdHJ1Y3QgZ3JlcF9vcHRgLgorCitGaXJzdCBzb21lIHNldHVwLiBBZGQgYGluaXRfZ3JlcF9kZWZhdWx0cygpYCB0byBgaW5pdF93YWxrZW5fZGVmYXVsdHMoKWAgYW5kIGFkZAorYGdyZXBfY29uZmlnKClgIHRvIGBnaXRfd2Fsa2VuX2NvbmZpZygpYDoKKworLS0tLQorc3RhdGljIHZvaWQgaW5pdF93YWxrZW5fZGVmYXVsdHModm9pZCkKK3sKKwlpbml0X2dyZXBfZGVmYXVsdHModGhlX3JlcG9zaXRvcnkpOworfQorCisuLi4KKworc3RhdGljIGludCBnaXRfd2Fsa2VuX2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKK3sKKwlncmVwX2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7CisJcmV0dXJuIGdpdF9kZWZhdWx0X2NvbmZpZyh2YXIsIHZhbHVlLCBjYik7Cit9CistLS0tCisKK05leHQsIHdlIGNhbiBtb2RpZnkgdGhlIGBncmVwX2ZpbHRlcmAuIFRoaXMgaXMgZG9uZSB3aXRoIGNvbnZlbmllbmNlIGZ1bmN0aW9ucworZm91bmQgaW4gYGdyZXAuaGAuIEZvciBmdW4sIHdlJ3JlIGZpbHRlcmluZyB0byBvbmx5IGNvbW1pdHMgZnJvbSBmb2xrcyB1c2luZyBhCitgZ21haWwuY29tYCBlbWFpbCBhZGRyZXNzIC0gYSBub3QtdmVyeS1wcmVjaXNlIGd1ZXNzIGF0IHdobyBtYXkgYmUgd29ya2luZyBvbgorR2l0IGFzIGEgaG9iYnkuIFNpbmNlIHdlJ3JlIGNoZWNraW5nIHRoZSBhdXRob3IsIHdoaWNoIGlzIGEgc3BlY2lmaWMgbGluZSBpbiB0aGUKK2hlYWRlciwgd2UnbGwgdXNlIHRoZSBgYXBwZW5kX2hlYWRlcl9ncmVwX3BhdHRlcm4oKWAgaGVscGVyLiBXZSBjYW4gdXNlCit0aGUgYGVudW0gZ3JlcF9oZWFkZXJfZmllbGRgIHRvIGluZGljYXRlIHdoaWNoIHBhcnQgb2YgdGhlIGNvbW1pdCBoZWFkZXIgd2Ugd2FudAordG8gc2VhcmNoLgorCitJbiBgZmluYWxfcmV2X2luZm9fc2V0dXAoKWAsIGFkZCB5b3VyIGZpbHRlciBsaW5lOgorCistLS0tCitzdGF0aWMgdm9pZCBmaW5hbF9yZXZfaW5mb19zZXR1cChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsCisJCWNvbnN0IGNoYXIgKnByZWZpeCwgc3RydWN0IHJldl9pbmZvICpyZXYpCit7CisJLi4uCisKKwlhcHBlbmRfaGVhZGVyX2dyZXBfcGF0dGVybigmcmV2LT5ncmVwX2ZpbHRlciwgR1JFUF9IRUFERVJfQVVUSE9SLAorCQkiZ21haWwiKTsKKwljb21waWxlX2dyZXBfcGF0dGVybnMoJnJldi0+Z3JlcF9maWx0ZXIpOworCisJLi4uCit9CistLS0tCisKK2BhcHBlbmRfaGVhZGVyX2dyZXBfcGF0dGVybigpYCBhZGRzIHlvdXIgbmV3ICJnbWFpbCIgcGF0dGVybiB0byBgcmV2X2luZm9gLCBidXQKK2l0IHdvbid0IHdvcmsgdW5sZXNzIHdlIGNvbXBpbGUgaXQgd2l0aCBgY29tcGlsZV9ncmVwX3BhdHRlcm5zKClgLgorCitOT1RFOiBJZiB5b3UgYXJlIHVzaW5nIGBzZXR1cF9yZXZpc2lvbnMoKWAgKGZvciBleGFtcGxlLCBpZiB5b3UgYXJlIHBhc3NpbmcgYQorYHNldHVwX3JldmlzaW9uX29wdGAgaW5zdGVhZCBvZiB1c2luZyBgYWRkX2hlYWRfdG9fcGVuZGluZygpYCksIHlvdSBkb24ndCBuZWVkCit0byBjYWxsIGBjb21waWxlX2dyZXBfcGF0dGVybnMoKWAgYmVjYXVzZSBgc2V0dXBfcmV2aXNpb25zKClgIGNhbGxzIGl0IGZvciB5b3UuCisKK05PVEU6IFdlIGNvdWxkIGFkZCB0aGUgc2FtZSBmaWx0ZXIgdmlhIHRoZSBgYXBwZW5kX2dyZXBfcGF0dGVybigpYCBoZWxwZXIgaWYgd2UKK3dhbnRlZCB0bywgYnV0IGBhcHBlbmRfaGVhZGVyX2dyZXBfcGF0dGVybigpYCBhZGRzIHRoZSBgZW51bSBncmVwX2NvbnRleHRgIGFuZAorYGVudW0gZ3JlcF9wYXRfdG9rZW5gIGZvciB1cy4KKworPT09IENoYW5naW5nIHRoZSBPcmRlcgorCitUaGVyZSBhcmUgYSBmZXcgd2F5cyB0aGF0IHdlIGNhbiBjaGFuZ2UgdGhlIG9yZGVyIG9mIHRoZSBjb21taXRzIGR1cmluZyBhCityZXZpc2lvbiB3YWxrLiBGaXJzdGx5LCB3ZSBjYW4gdXNlIHRoZSBgZW51bSByZXZfc29ydF9vcmRlcmAgdG8gY2hvb3NlIGZyb20gc29tZQordHlwaWNhbCBvcmRlcmluZ3MuCisKK2B0b3BvX29yZGVyYCBpcyB0aGUgc2FtZSBhcyBgZ2l0IGxvZyAtLXRvcG8tb3JkZXJgOiB3ZSBhdm9pZCBzaG93aW5nIGEgcGFyZW50CitiZWZvcmUgYWxsIG9mIGl0cyBjaGlsZHJlbiBoYXZlIGJlZW4gc2hvd24sIGFuZCB3ZSBhdm9pZCBtaXhpbmcgY29tbWl0cyB3aGljaAorYXJlIGluIGRpZmZlcmVudCBsaW5lcyBvZiBoaXN0b3J5LiAoYGdpdCBoZWxwIGxvZ2AncyBzZWN0aW9uIG9uIGAtLXRvcG8tb3JkZXJgCitoYXMgYSB2ZXJ5IG5pY2UgZGlhZ3JhbSB0byBpbGx1c3RyYXRlIHRoaXMuKQorCitMZXQncyBzZWUgd2hhdCBoYXBwZW5zIHdoZW4gd2UgcnVuIHdpdGggYFJFVl9TT1JUX0JZX0NPTU1JVF9EQVRFYCBhcyBvcHBvc2VkIHRvCitgUkVWX1NPUlRfQllfQVVUSE9SX0RBVEVgLiBBZGQgdGhlIGZvbGxvd2luZzoKKworLS0tLQorc3RhdGljIHZvaWQgZmluYWxfcmV2X2luZm9fc2V0dXAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LAorCQljb25zdCBjaGFyICpwcmVmaXgsIHN0cnVjdCByZXZfaW5mbyAqcmV2KQoreworCS4uLgorCisJcmV2LT50b3BvX29yZGVyID0gMTsKKwlyZXYtPnNvcnRfb3JkZXIgPSBSRVZfU09SVF9CWV9DT01NSVRfREFURTsKKworCS4uLgorfQorLS0tLQorCitMZXQncyBvdXRwdXQgdGhpcyBpbnRvIGEgZmlsZSBzbyB3ZSBjYW4gZWFzaWx5IGRpZmYgaXQgd2l0aCB0aGUgd2FsayBzb3J0ZWQgYnkKK2F1dGhvciBkYXRlLgorCistLS0tCiskIG1ha2UKKyQgLi9iaW4td3JhcHBlcnMvZ2l0IHdhbGtlbiA+IGNvbW1pdC1kYXRlLnR4dAorLS0tLQorCitUaGVuLCBsZXQncyBzb3J0IGJ5IGF1dGhvciBkYXRlIGFuZCBydW4gaXQgYWdhaW4uCisKKy0tLS0KK3N0YXRpYyB2b2lkIGZpbmFsX3Jldl9pbmZvX3NldHVwKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwKKwkJY29uc3QgY2hhciAqcHJlZml4LCBzdHJ1Y3QgcmV2X2luZm8gKnJldikKK3sKKwkuLi4KKworCXJldi0+dG9wb19vcmRlciA9IDE7CisJcmV2LT5zb3J0X29yZGVyID0gUkVWX1NPUlRfQllfQVVUSE9SX0RBVEU7CisKKwkuLi4KK30KKy0tLS0KKworLS0tLQorJCBtYWtlCiskIC4vYmluLXdyYXBwZXJzL2dpdCB3YWxrZW4gPiBhdXRob3ItZGF0ZS50eHQKKy0tLS0KKworRmluYWxseSwgY29tcGFyZSB0aGUgdHdvLiBUaGlzIGlzIGEgbGl0dGxlIGxlc3MgaGVscGZ1bCB3aXRob3V0IG9iamVjdCBuYW1lcyBvcgorZGF0ZXMsIGJ1dCBob3BlZnVsbHkgd2UgZ2V0IHRoZSBpZGVhLgorCistLS0tCiskIGRpZmYgLXUgY29tbWl0LWRhdGUudHh0IGF1dGhvci1kYXRlLnR4dAorLS0tLQorCitUaGlzIGRpc3BsYXkgaW5kaWNhdGVzIHRoYXQgY29tbWl0cyBjYW4gYmUgcmVvcmRlcmVkIGFmdGVyIHRoZXkncmUgd3JpdHRlbiwgZm9yCitleGFtcGxlIHdpdGggYGdpdCByZWJhc2VgLgorCitMZXQncyB0cnkgb25lIG1vcmUgcmVvcmRlcmluZyBvZiBjb21taXRzLiBgcmV2X2luZm9gIGV4cG9zZXMgYSBgcmV2ZXJzZWAgZmxhZy4KK1NldCB0aGF0IGZsYWcgc29tZXdoZXJlIGluc2lkZSBvZiBgZmluYWxfcmV2X2luZm9fc2V0dXAoKWA6CisKKy0tLS0KK3N0YXRpYyB2b2lkIGZpbmFsX3Jldl9pbmZvX3NldHVwKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4LAorCQlzdHJ1Y3QgcmV2X2luZm8gKnJldikKK3sKKwkuLi4KKworCXJldi0+cmV2ZXJzZSA9IDE7CisKKwkuLi4KK30KKy0tLS0KKworUnVuIHlvdXIgd2FsayBhZ2FpbiBhbmQgbm90ZSB0aGUgZGlmZmVyZW5jZSBpbiBvcmRlci4gKElmIHlvdSByZW1vdmUgdGhlIGdyZXAKK3BhdHRlcm4sIHlvdSBzaG91bGQgc2VlIHRoZSBsYXN0IGNvbW1pdCB0aGlzIGNhbGwgZ2l2ZXMgeW91IGFzIHlvdXIgY3VycmVudAorSEVBRC4pCisKKz09IEJhc2ljIE9iamVjdCBXYWxrCisKK1NvIGZhciB3ZSd2ZSBiZWVuIHdhbGtpbmcgb25seSBjb21taXRzLiBCdXQgR2l0IGhhcyBtb3JlIHR5cGVzIG9mIG9iamVjdHMgdGhhbgordGhhdCEgTGV0J3Mgc2VlIGlmIHdlIGNhbiB3YWxrIF9hbGxfIG9iamVjdHMsIGFuZCBmaW5kIG91dCBzb21lIGluZm9ybWF0aW9uCithYm91dCBlYWNoIG9uZS4KKworV2UgY2FuIGJhc2Ugb3VyIHdvcmsgb24gYW4gZXhhbXBsZS4gYGdpdCBwYWNrLW9iamVjdHNgIHByZXBhcmVzIGFsbCBraW5kcyBvZgorb2JqZWN0cyBmb3IgcGFja2luZyBpbnRvIGEgYml0bWFwIG9yIHBhY2tmaWxlLiBUaGUgd29yayB3ZSBhcmUgaW50ZXJlc3RlZCBpbgorcmVzaWRlcyBpbiBgYnVpbHRpbnMvcGFjay1vYmplY3RzLmM6Z2V0X29iamVjdF9saXN0KClgOyBleGFtaW5hdGlvbiBvZiB0aGF0CitmdW5jdGlvbiBzaG93cyB0aGF0IHRoZSBhbGwtb2JqZWN0IHdhbGsgaXMgYmVpbmcgcGVyZm9ybWVkIGJ5CitgdHJhdmVyc2VfY29tbWl0X2xpc3QoKWAgb3IgYHRyYXZlcnNlX2NvbW1pdF9saXN0X2ZpbHRlcmVkKClgLiBUaG9zZSB0d28KK2Z1bmN0aW9ucyByZXNpZGUgaW4gYGxpc3Qtb2JqZWN0cy5jYDsgZXhhbWluaW5nIHRoZSBzb3VyY2Ugc2hvd3MgdGhhdCwgZGVzcGl0ZQordGhlIG5hbWUsIHRoZXNlIGZ1bmN0aW9ucyB0cmF2ZXJzZSBhbGwga2luZHMgb2Ygb2JqZWN0cy4gTGV0J3MgaGF2ZSBhIGxvb2sgYXQKK3RoZSBhcmd1bWVudHMgdG8gYHRyYXZlcnNlX2NvbW1pdF9saXN0X2ZpbHRlcmVkKClgLCB3aGljaCBhcmUgYSBzdXBlcnNldCBvZiB0aGUKK2FyZ3VtZW50cyB0byB0aGUgdW5maWx0ZXJlZCB2ZXJzaW9uLgorCistIGBzdHJ1Y3QgbGlzdF9vYmplY3RzX2ZpbHRlcl9vcHRpb25zICpmaWx0ZXJfb3B0aW9uc2A6IFRoaXMgaXMgYSBzdHJ1Y3Qgd2hpY2gKKyAgc3RvcmVzIGEgZmlsdGVyLXNwZWMgYXMgb3V0bGluZWQgaW4gYERvY3VtZW50YXRpb24vcmV2LWxpc3Qtb3B0aW9ucy50eHRgLgorLSBgc3RydWN0IHJldl9pbmZvICpyZXZzYDogVGhpcyBpcyB0aGUgYHJldl9pbmZvYCB1c2VkIGZvciB0aGUgd2Fsay4KKy0gYHNob3dfY29tbWl0X2ZuIHNob3dfY29tbWl0YDogQSBjYWxsYmFjayB3aGljaCB3aWxsIGJlIHVzZWQgdG8gaGFuZGxlIGVhY2gKKyAgaW5kaXZpZHVhbCBjb21taXQgb2JqZWN0LgorLSBgc2hvd19vYmplY3RfZm4gc2hvd19vYmplY3RgOiBBIGNhbGxiYWNrIHdoaWNoIHdpbGwgYmUgdXNlZCB0byBoYW5kbGUgZWFjaAorICBub24tY29tbWl0IG9iamVjdCAoc28gZWFjaCBibG9iLCB0cmVlLCBvciB0YWcpLgorLSBgdm9pZCAqc2hvd19kYXRhYDogQSBjb250ZXh0IGJ1ZmZlciB3aGljaCBpcyBwYXNzZWQgaW4gdHVybiB0byBgc2hvd19jb21taXRgCisgIGFuZCBgc2hvd19vYmplY3RgLgorLSBgc3RydWN0IG9pZHNldCAqb21pdHRlZGA6IEEgbGlua2VkLWxpc3Qgb2Ygb2JqZWN0IElEcyB3aGljaCB0aGUgcHJvdmlkZWQKKyAgZmlsdGVyIGNhdXNlZCB0byBiZSBvbWl0dGVkLgorCitJdCBsb29rcyBsaWtlIHRoaXMgYHRyYXZlcnNlX2NvbW1pdF9saXN0X2ZpbHRlcmVkKClgIHVzZXMgY2FsbGJhY2tzIHdlIHByb3ZpZGUKK2luc3RlYWQgb2YgbmVlZGluZyB1cyB0byBjYWxsIGl0IHJlcGVhdGVkbHkgb3Vyc2VsdmVzLiBDb29sISBMZXQncyBhZGQgdGhlCitjYWxsYmFja3MgZmlyc3QuCisKK0ZvciB0aGUgc2FrZSBvZiB0aGlzIHR1dG9yaWFsLCB3ZSdsbCBzaW1wbHkga2VlcCB0cmFjayBvZiBob3cgbWFueSBvZiBlYWNoIGtpbmQKK29mIG9iamVjdCB3ZSBmaW5kLiBBdCBmaWxlIHNjb3BlIGluIGBidWlsdGluL3dhbGtlbi5jYCBhZGQgdGhlIGZvbGxvd2luZwordHJhY2tpbmcgdmFyaWFibGVzOgorCistLS0tCitzdGF0aWMgaW50IGNvbW1pdF9jb3VudDsKK3N0YXRpYyBpbnQgdGFnX2NvdW50Oworc3RhdGljIGludCBibG9iX2NvdW50Oworc3RhdGljIGludCB0cmVlX2NvdW50OworLS0tLQorCitDb21taXRzIGFyZSBoYW5kbGVkIGJ5IGEgZGlmZmVyZW50IGNhbGxiYWNrIHRoYW4gb3RoZXIgb2JqZWN0czsgbGV0J3MgZG8gdGhhdAorb25lIGZpcnN0OgorCistLS0tCitzdGF0aWMgdm9pZCB3YWxrZW5fc2hvd19jb21taXQoc3RydWN0IGNvbW1pdCAqY210LCB2b2lkICpidWYpCit7CisJY29tbWl0X2NvdW50Kys7Cit9CistLS0tCisKK1RoZSBgY210YCBhcmd1bWVudCBpcyBmYWlybHkgc2VsZi1leHBsYW5hdG9yeS4gQnV0IGl0J3Mgd29ydGggbWVudGlvbmluZyB0aGF0Cit0aGUgYGJ1ZmAgYXJndW1lbnQgaXMgYWN0dWFsbHkgdGhlIGNvbnRleHQgYnVmZmVyIHRoYXQgd2UgY2FuIHByb3ZpZGUgdG8gdGhlCit0cmF2ZXJzYWwgY2FsbHMgLSBgc2hvd19kYXRhYCwgd2hpY2ggd2UgbWVudGlvbmVkIGEgbW9tZW50IGFnby4KKworU2luY2Ugd2UgaGF2ZSB0aGUgYHN0cnVjdCBjb21taXRgIG9iamVjdCwgd2UgY2FuIGxvb2sgYXQgYWxsIHRoZSBzYW1lIHBhcnRzIHRoYXQKK3dlIGxvb2tlZCBhdCBpbiBvdXIgZWFybGllciBjb21taXQtb25seSB3YWxrLiBGb3IgdGhlIHNha2Ugb2YgdGhpcyB0dXRvcmlhbCwKK3Rob3VnaCwgd2UnbGwganVzdCBpbmNyZW1lbnQgdGhlIGNvbW1pdCBjb3VudGVyIGFuZCBtb3ZlIG9uLgorCitUaGUgY2FsbGJhY2sgZm9yIG5vbi1jb21taXRzIGlzIGEgbGl0dGxlIGRpZmZlcmVudCwgYXMgd2UnbGwgbmVlZCB0byBjaGVjaword2hpY2gga2luZCBvZiBvYmplY3Qgd2UncmUgZGVhbGluZyB3aXRoOgorCistLS0tCitzdGF0aWMgdm9pZCB3YWxrZW5fc2hvd19vYmplY3Qoc3RydWN0IG9iamVjdCAqb2JqLCBjb25zdCBjaGFyICpzdHIsIHZvaWQgKmJ1ZikKK3sKKwlzd2l0Y2ggKG9iai0+dHlwZSkgeworCWNhc2UgT0JKX1RSRUU6CisJCXRyZWVfY291bnQrKzsKKwkJYnJlYWs7CisJY2FzZSBPQkpfQkxPQjoKKwkJYmxvYl9jb3VudCsrOworCQlicmVhazsKKwljYXNlIE9CSl9UQUc6CisJCXRhZ19jb3VudCsrOworCQlicmVhazsKKwljYXNlIE9CSl9DT01NSVQ6CisJCUJVRygidW5leHBlY3RlZCBjb21taXQgb2JqZWN0IGluIHdhbGtlbl9zaG93X29iamVjdFxuIik7CisJZGVmYXVsdDoKKwkJQlVHKCJ1bmV4cGVjdGVkIG9iamVjdCB0eXBlICVzIGluIHdhbGtlbl9zaG93X29iamVjdFxuIiwKKwkJCXR5cGVfbmFtZShvYmotPnR5cGUpKTsKKwl9Cit9CistLS0tCisKK0FnYWluLCBgb2JqYCBpcyBmYWlybHkgc2VsZi1leHBsYW5hdG9yeSwgYW5kIHdlIGNhbiBndWVzcyB0aGF0IGBidWZgIGlzIHRoZSBzYW1lCitjb250ZXh0IHBvaW50ZXIgdGhhdCBgd2Fsa2VuX3Nob3dfY29tbWl0KClgIHJlY2VpdmVzOiB0aGUgYHNob3dfZGF0YWAgYXJndW1lbnQKK3RvIGB0cmF2ZXJzZV9jb21taXRfbGlzdCgpYCBhbmQgYHRyYXZlcnNlX2NvbW1pdF9saXN0X2ZpbHRlcmVkKClgLiBGaW5hbGx5LAorYHN0cmAgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIG9iamVjdCwgd2hpY2ggZW5kcyB1cCBiZWluZyBzb21ldGhpbmcgbGlrZQorYGZvby50eHRgIChibG9iKSwgYGJhci9iYXpgICh0cmVlKSwgb3IgYHYxLjIuM2AgKHRhZykuCisKK1RvIGhlbHAgYXNzdXJlIHVzIHRoYXQgd2UgYXJlbid0IGRvdWJsZS1jb3VudGluZyBjb21taXRzLCB3ZSdsbCBpbmNsdWRlIHNvbWUKK2NvbXBsYWluaW5nIGlmIGEgY29tbWl0IG9iamVjdCBpcyByb3V0ZWQgdGhyb3VnaCBvdXIgbm9uLWNvbW1pdCBjYWxsYmFjazsgd2UnbGwKK2Fsc28gY29tcGxhaW4gaWYgd2Ugc2VlIGFuIGludmFsaWQgb2JqZWN0IHR5cGUuIFNpbmNlIHRob3NlIHR3byBjYXNlcyBzaG91bGQgYmUKK3VucmVhY2hhYmxlLCBhbmQgd291bGQgb25seSBjaGFuZ2UgaW4gdGhlIGV2ZW50IG9mIGEgc2VtYW50aWMgY2hhbmdlIHRvIHRoZSBHaXQKK2NvZGViYXNlLCB3ZSBjb21wbGFpbiBieSB1c2luZyBgQlVHKClgIC0gd2hpY2ggaXMgYSBzaWduYWwgdG8gYSBkZXZlbG9wZXIgdGhhdAordGhlIGNoYW5nZSB0aGV5IG1hZGUgY2F1c2VkIHVuaW50ZW5kZWQgY29uc2VxdWVuY2VzLCBhbmQgdGhlIHJlc3Qgb2YgdGhlCitjb2RlYmFzZSBuZWVkcyB0byBiZSB1cGRhdGVkIHRvIHVuZGVyc3RhbmQgdGhhdCBjaGFuZ2UuIGBCVUcoKWAgaXMgbm90IGludGVuZGVkCit0byBiZSBzZWVuIGJ5IHRoZSBwdWJsaWMsIHNvIGl0IGlzIG5vdCBsb2NhbGl6ZWQuCisKK091ciBtYWluIG9iamVjdCB3YWxrIGltcGxlbWVudGF0aW9uIGlzIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50IGZyb20gb3VyIGNvbW1pdAord2FsayBpbXBsZW1lbnRhdGlvbiwgc28gbGV0J3MgbWFrZSBhIG5ldyBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSBvYmplY3Qgd2Fsay4gV2UKK2NhbiBwZXJmb3JtIHNldHVwIHdoaWNoIGlzIGFwcGxpY2FibGUgdG8gYWxsIG9iamVjdHMgaGVyZSwgdG9vLCB0byBrZWVwIHNlcGFyYXRlCitmcm9tIHNldHVwIHdoaWNoIGlzIGFwcGxpY2FibGUgdG8gY29tbWl0LW9ubHkgd2Fsa3MuCisKK1dlJ2xsIHN0YXJ0IGJ5IGVuYWJsaW5nIGFsbCB0eXBlcyBvZiBvYmplY3RzIGluIHRoZSBgc3RydWN0IHJldl9pbmZvYC4gIFdlJ2xsCithbHNvIHR1cm4gb24gYHRyZWVfYmxvYnNfaW5fY29tbWl0X29yZGVyYCwgd2hpY2ggbWVhbnMgdGhhdCB3ZSB3aWxsIHdhbGsgYQorY29tbWl0J3MgdHJlZSBhbmQgZXZlcnl0aGluZyBpdCBwb2ludHMgdG8gaW1tZWRpYXRlbHkgYWZ0ZXIgd2UgZmluZCBlYWNoIGNvbW1pdCwKK2FzIG9wcG9zZWQgdG8gd2FpdGluZyBmb3IgdGhlIGVuZCBhbmQgd2Fsa2luZyB0aHJvdWdoIGFsbCB0cmVlcyBhZnRlciB0aGUgY29tbWl0CitoaXN0b3J5IGhhcyBiZWVuIGRpc2NvdmVyZWQuIFdpdGggdGhlIGFwcHJvcHJpYXRlIHNldHRpbmdzIGNvbmZpZ3VyZWQsIHdlIGFyZQorcmVhZHkgdG8gY2FsbCBgcHJlcGFyZV9yZXZpc2lvbl93YWxrKClgLgorCistLS0tCitzdGF0aWMgdm9pZCB3YWxrZW5fb2JqZWN0X3dhbGsoc3RydWN0IHJldl9pbmZvICpyZXYpCit7CisJcmV2LT50cmVlX29iamVjdHMgPSAxOworCXJldi0+YmxvYl9vYmplY3RzID0gMTsKKwlyZXYtPnRhZ19vYmplY3RzID0gMTsKKwlyZXYtPnRyZWVfYmxvYnNfaW5fY29tbWl0X29yZGVyID0gMTsKKworCWlmIChwcmVwYXJlX3JldmlzaW9uX3dhbGsocmV2KSkKKwkJZGllKF8oInJldmlzaW9uIHdhbGsgc2V0dXAgZmFpbGVkIikpOworCisJY29tbWl0X2NvdW50ID0gMDsKKwl0YWdfY291bnQgPSAwOworCWJsb2JfY291bnQgPSAwOworCXRyZWVfY291bnQgPSAwOworLS0tLQorCitMZXQncyBzdGFydCBieSBjYWxsaW5nIGp1c3QgdGhlIHVuZmlsdGVyZWQgd2FsayBhbmQgcmVwb3J0aW5nIG91ciBjb3VudHMuCitDb21wbGV0ZSB5b3VyIGltcGxlbWVudGF0aW9uIG9mIGB3YWxrZW5fb2JqZWN0X3dhbGsoKWA6CisKKy0tLS0KKwl0cmF2ZXJzZV9jb21taXRfbGlzdChyZXYsIHdhbGtlbl9zaG93X2NvbW1pdCwgd2Fsa2VuX3Nob3dfb2JqZWN0LCBOVUxMKTsKKworCXByaW50ZigiY29tbWl0cyAlZFxuYmxvYnMgJWRcbnRhZ3MgJWRcbnRyZWVzICVkXG4iLCBjb21taXRfY291bnQsCisJCWJsb2JfY291bnQsIHRhZ19jb3VudCwgdHJlZV9jb3VudCk7Cit9CistLS0tCisKK05PVEU6IFRoaXMgb3V0cHV0IGlzIGludGVuZGVkIHRvIGJlIG1hY2hpbmUtcGFyc2VkLiBUaGVyZWZvcmUsIHdlIGFyZSBub3QKK3NlbmRpbmcgaXQgdG8gYHRyYWNlX3ByaW50ZigpYCwgYW5kIHdlIGFyZSBub3QgbG9jYWxpemluZyBpdCAtIHdlIG5lZWQgc2NyaXB0cwordG8gYmUgYWJsZSB0byBjb3VudCBvbiB0aGUgZm9ybWF0dGluZyB0byBiZSBleGFjdGx5IHRoZSB3YXkgaXQgaXMgc2hvd24gaGVyZS4KK0lmIHdlIHdlcmUgaW50ZW5kaW5nIHRoaXMgb3V0cHV0IHRvIGJlIHJlYWQgYnkgaHVtYW5zLCB3ZSB3b3VsZCBuZWVkIHRvIGxvY2FsaXplCitpdCB3aXRoIGBfKClgLgorCitGaW5hbGx5LCB3ZSdsbCBhc2sgYGNtZF93YWxrZW4oKWAgdG8gdXNlIHRoZSBvYmplY3Qgd2FsayBpbnN0ZWFkLiBEaXNjdXNzaW5nCitjb21tYW5kIGxpbmUgb3B0aW9ucyBpcyBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgdHV0b3JpYWwsIHNvIHdlJ2xsIGp1c3QgaGFyZGNvZGUKK2EgYnJhbmNoIHdlIGNhbiBjaGFuZ2UgYXQgY29tcGlsZSB0aW1lLiBXaGVyZSB5b3UgY2FsbCBgZmluYWxfcmV2X2luZm9fc2V0dXAoKWAKK2FuZCBgd2Fsa2VuX2NvbW1pdF93YWxrKClgLCBpbnN0ZWFkIGJyYW5jaCBsaWtlIHNvOgorCistLS0tCisJaWYgKDEpIHsKKwkJYWRkX2hlYWRfdG9fcGVuZGluZygmcmV2KTsKKwkJd2Fsa2VuX29iamVjdF93YWxrKCZyZXYpOworCX0gZWxzZSB7CisJCWZpbmFsX3Jldl9pbmZvX3NldHVwKGFyZ2MsIGFyZ3YsIHByZWZpeCwgJnJldik7CisJCXdhbGtlbl9jb21taXRfd2FsaygmcmV2KTsKKwl9CistLS0tCisKK05PVEU6IEZvciBzaW1wbGljaXR5LCB3ZSd2ZSBhdm9pZGVkIGFsbCB0aGUgZmlsdGVycyBhbmQgc29ydHMgd2UgYXBwbGllZCBpbgorYGZpbmFsX3Jldl9pbmZvX3NldHVwKClgIGFuZCBzaW1wbHkgYWRkZWQgYEhFQURgIHRvIG91ciBwZW5kaW5nIHF1ZXVlLiBJZiB5b3UKK3dhbnQsIHlvdSBjYW4gY2VydGFpbmx5IHVzZSB0aGUgZmlsdGVycyB3ZSBhZGRlZCBiZWZvcmUgYnkgbW92aW5nCitgZmluYWxfcmV2X2luZm9fc2V0dXAoKWAgb3V0IG9mIHRoZSBjb25kaXRpb25hbCBhbmQgcmVtb3ZpbmcgdGhlIGNhbGwgdG8KK2BhZGRfaGVhZF90b19wZW5kaW5nKClgLgorCitOb3cgd2UgY2FuIHRyeSB0byBydW4gb3VyIGNvbW1hbmQhIEl0IHNob3VsZCB0YWtlIG5vdGljZWFibHkgbG9uZ2VyIHRoYW4gdGhlCitjb21taXQgd2FsaywgYnV0IGFuIGV4YW1pbmF0aW9uIG9mIHRoZSBvdXRwdXQgd2lsbCBnaXZlIHlvdSBhbiBpZGVhIHdoeS4gWW91cgorb3V0cHV0IHNob3VsZCBsb29rIHNpbWlsYXIgdG8gdGhpcyBleGFtcGxlLCBidXQgd2l0aCBkaWZmZXJlbnQgY291bnRzOgorCistLS0tCitPYmplY3Qgd2FsayBjb21wbGV0ZWQuIEZvdW5kIDU1NzMzIGNvbW1pdHMsIDEwMDI3NCBibG9icywgMCB0YWdzLCBhbmQgMTA0MjEwIHRyZWVzLgorLS0tLQorCitUaGlzIG1ha2VzIHNlbnNlLiBXZSBoYXZlIG1vcmUgdHJlZXMgdGhhbiBjb21taXRzIGJlY2F1c2UgdGhlIEdpdCBwcm9qZWN0IGhhcworbG90cyBvZiBzdWJkaXJlY3RvcmllcyB3aGljaCBjYW4gY2hhbmdlLCBwbHVzIGF0IGxlYXN0IG9uZSB0cmVlIHBlciBjb21taXQuIFdlCitoYXZlIG5vIHRhZ3MgYmVjYXVzZSB3ZSBzdGFydGVkIG9uIGEgY29tbWl0IChgSEVBRGApIGFuZCB3aGlsZSB0YWdzIGNhbiBwb2ludCB0bworY29tbWl0cywgY29tbWl0cyBjYW4ndCBwb2ludCB0byB0YWdzLgorCitOT1RFOiBZb3Ugd2lsbCBoYXZlIGRpZmZlcmVudCBjb3VudHMgd2hlbiB5b3UgcnVuIHRoaXMgeW91cnNlbGYhIFRoZSBudW1iZXIgb2YKK29iamVjdHMgZ3Jvd3MgYWxvbmcgd2l0aCB0aGUgR2l0IHByb2plY3QuCisKKz09PSBBZGRpbmcgYSBGaWx0ZXIKKworVGhlcmUgYXJlIGEgaGFuZGZ1bCBvZiBmaWx0ZXJzIHRoYXQgd2UgY2FuIGFwcGx5IHRvIHRoZSBvYmplY3Qgd2FsayBsYWlkIG91dCBpbgorYERvY3VtZW50YXRpb24vcmV2LWxpc3Qtb3B0aW9ucy50eHRgLiBUaGVzZSBmaWx0ZXJzIGFyZSB0eXBpY2FsbHkgdXNlZnVsIGZvcgorb3BlcmF0aW9ucyBzdWNoIGFzIGNyZWF0aW5nIHBhY2tmaWxlcyBvciBwZXJmb3JtaW5nIGEgcGFydGlhbCBjbG9uZS4gVGhleSBhcmUKK2RlZmluZWQgaW4gYGxpc3Qtb2JqZWN0cy1maWx0ZXItb3B0aW9ucy5oYC4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIHR1dG9yaWFsIHdlCit3aWxsIHVzZSB0aGUgInRyZWU6MSIgZmlsdGVyLCB3aGljaCBjYXVzZXMgdGhlIHdhbGsgdG8gb21pdCBhbGwgdHJlZXMgYW5kIGJsb2JzCit3aGljaCBhcmUgbm90IGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgY29tbWl0cyByZWFjaGFibGUgZnJvbSB0aGUgY29tbWl0IGluCitgcGVuZGluZ2Agd2hlbiB0aGUgd2FsayBiZWdpbnMuIChgcGVuZGluZ2AgaXMgdGhlIGxpc3Qgb2Ygb2JqZWN0cyB3aGljaCBuZWVkIHRvCitiZSB0cmF2ZXJzZWQgZHVyaW5nIGEgd2FsazsgeW91IGNhbiBpbWFnaW5lIGEgYnJlYWR0aC1maXJzdCB0cmVlIHRyYXZlcnNhbCB0bworaGVscCB1bmRlcnN0YW5kLiBJbiBvdXIgY2FzZSwgdGhhdCBtZWFucyB3ZSBvbWl0IHRyZWVzIGFuZCBibG9icyBub3QgZGlyZWN0bHkKK3JlZmVyZW5jZWQgYnkgYEhFQURgIG9yIGBIRUFEYCdzIGhpc3RvcnksIGJlY2F1c2Ugd2UgYmVnaW4gdGhlIHdhbGsgd2l0aCBvbmx5CitgSEVBRGAgaW4gdGhlIGBwZW5kaW5nYCBsaXN0LikKKworRmlyc3QsIHdlJ2xsIG5lZWQgdG8gYCNpbmNsdWRlICJsaXN0LW9iamVjdHMtZmlsdGVyLW9wdGlvbnMuaGAiIGFuZCBzZXQgdXAgdGhlCitgc3RydWN0IGxpc3Rfb2JqZWN0c19maWx0ZXJfb3B0aW9uc2AgYXQgdGhlIHRvcCBvZiB0aGUgZnVuY3Rpb24uCisKKy0tLS0KK3N0YXRpYyB2b2lkIHdhbGtlbl9vYmplY3Rfd2FsayhzdHJ1Y3QgcmV2X2luZm8gKnJldikKK3sKKwlzdHJ1Y3QgbGlzdF9vYmplY3RzX2ZpbHRlcl9vcHRpb25zIGZpbHRlcl9vcHRpb25zID0ge307CisKKwkuLi4KKy0tLS0KKworRm9yIG5vdywgd2UgYXJlIG5vdCBnb2luZyB0byB0cmFjayB0aGUgb21pdHRlZCBvYmplY3RzLCBzbyB3ZSdsbCByZXBsYWNlIHRob3NlCitwYXJhbWV0ZXJzIHdpdGggYE5VTExgLiBGb3IgdGhlIHNha2Ugb2Ygc2ltcGxpY2l0eSwgd2UnbGwgYWRkIGEgc2ltcGxlCitidWlsZC10aW1lIGJyYW5jaCB0byB1c2Ugb3VyIGZpbHRlciBvciBub3QuIFJlcGxhY2UgdGhlIGxpbmUgY2FsbGluZworYHRyYXZlcnNlX2NvbW1pdF9saXN0KClgIHdpdGggdGhlIGZvbGxvd2luZywgd2hpY2ggd2lsbCByZW1pbmQgdXMgd2hpY2gga2luZCBvZgord2FsayB3ZSd2ZSBqdXN0IHBlcmZvcm1lZDoKKworLS0tLQorCWlmICgwKSB7CisJCS8qIFVuZmlsdGVyZWQ6ICovCisJCXRyYWNlX3ByaW50ZihfKCJVbmZpbHRlcmVkIG9iamVjdCB3YWxrLlxuIikpOworCQl0cmF2ZXJzZV9jb21taXRfbGlzdChyZXYsIHdhbGtlbl9zaG93X2NvbW1pdCwKKwkJCQl3YWxrZW5fc2hvd19vYmplY3QsIE5VTEwpOworCX0gZWxzZSB7CisJCXRyYWNlX3ByaW50ZigKKwkJCV8oIkZpbHRlcmVkIG9iamVjdCB3YWxrIHdpdGggZmlsdGVyc3BlYyAndHJlZToxJy5cbiIpKTsKKwkJcGFyc2VfbGlzdF9vYmplY3RzX2ZpbHRlcigmZmlsdGVyX29wdGlvbnMsICJ0cmVlOjEiKTsKKworCQl0cmF2ZXJzZV9jb21taXRfbGlzdF9maWx0ZXJlZCgmZmlsdGVyX29wdGlvbnMsIHJldiwKKwkJCXdhbGtlbl9zaG93X2NvbW1pdCwgd2Fsa2VuX3Nob3dfb2JqZWN0LCBOVUxMLCBOVUxMKTsKKwl9CistLS0tCisKK2BzdHJ1Y3QgbGlzdF9vYmplY3RzX2ZpbHRlcl9vcHRpb25zYCBpcyB1c3VhbGx5IGJ1aWx0IGRpcmVjdGx5IGZyb20gYSBjb21tYW5kCitsaW5lIGFyZ3VtZW50LCBzbyB0aGUgbW9kdWxlIHByb3ZpZGVzIGFuIGVhc3kgd2F5IHRvIGJ1aWxkIG9uZSBmcm9tIGEgc3RyaW5nLgorRXZlbiB0aG91Z2ggd2UgYXJlbid0IHRha2luZyB1c2VyIGlucHV0IHJpZ2h0IG5vdywgd2UgY2FuIHN0aWxsIGJ1aWxkIG9uZSB3aXRoCithIGhhcmRjb2RlZCBzdHJpbmcgdXNpbmcgYHBhcnNlX2xpc3Rfb2JqZWN0c19maWx0ZXIoKWAuCisKK1dpdGggdGhlIGZpbHRlciBzcGVjICJ0cmVlOjEiLCB3ZSBhcmUgZXhwZWN0aW5nIHRvIHNlZSBfb25seV8gdGhlIHJvb3QgdHJlZSBmb3IKK2VhY2ggY29tbWl0OyB0aGVyZWZvcmUsIHRoZSB0cmVlIG9iamVjdCBjb3VudCBzaG91bGQgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvCit0aGUgbnVtYmVyIG9mIGNvbW1pdHMuIChGb3IgYW4gZXhhbXBsZSBvZiB3aHkgdGhhdCdzIHRydWU6IGBnaXQgY29tbWl0IC0tcmV2ZXJ0YAorcG9pbnRzIHRvIHRoZSBzYW1lIHRyZWUgb2JqZWN0IGFzIGl0cyBncmFuZHBhcmVudC4pCisKKz09PSBDb3VudGluZyBPbWl0dGVkIE9iamVjdHMKKworV2UgYWxzbyBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIGVudW1lcmF0ZSBhbGwgb2JqZWN0cyB3aGljaCB3ZXJlIG9taXR0ZWQgYnkgYQorZmlsdGVyLCBsaWtlIHdpdGggYGdpdCBsb2cgLS1maWx0ZXI9PHNwZWM+IC0tZmlsdGVyLXByaW50LW9taXR0ZWRgLiBBc2tpbmcKK2B0cmF2ZXJzZV9jb21taXRfbGlzdF9maWx0ZXJlZCgpYCB0byBwb3B1bGF0ZSB0aGUgYG9taXR0ZWRgIGxpc3QgbWVhbnMgdGhhdCBvdXIKK29iamVjdCB3YWxrIGRvZXMgbm90IHBlcmZvcm0gYW55IGJldHRlciB0aGFuIGFuIHVuZmlsdGVyZWQgb2JqZWN0IHdhbGs7IGFsbAorcmVhY2hhYmxlIG9iamVjdHMgYXJlIHdhbGtlZCBpbiBvcmRlciB0byBwb3B1bGF0ZSB0aGUgbGlzdC4KKworRmlyc3QsIGFkZCB0aGUgYHN0cnVjdCBvaWRzZXRgIGFuZCByZWxhdGVkIGl0ZW1zIHdlIHdpbGwgdXNlIHRvIGl0ZXJhdGUgaXQ6CisKKy0tLS0KK3N0YXRpYyB2b2lkIHdhbGtlbl9vYmplY3Rfd2FsaygKKwkuLi4KKworCXN0cnVjdCBvaWRzZXQgb21pdHRlZDsKKwlzdHJ1Y3Qgb2lkc2V0X2l0ZXIgb2l0OworCXN0cnVjdCBvYmplY3RfaWQgKm9pZCA9IE5VTEw7CisJaW50IG9taXR0ZWRfY291bnQgPSAwOworCW9pZHNldF9pbml0KCZvbWl0dGVkLCAwKTsKKworCS4uLgorLS0tLQorCitNb2RpZnkgdGhlIGNhbGwgdG8gYHRyYXZlcnNlX2NvbW1pdF9saXN0X2ZpbHRlcmVkKClgIHRvIGluY2x1ZGUgeW91ciBgb21pdHRlZGAKK29iamVjdDoKKworLS0tLQorCS4uLgorCisJCXRyYXZlcnNlX2NvbW1pdF9saXN0X2ZpbHRlcmVkKCZmaWx0ZXJfb3B0aW9ucywgcmV2LAorCQkJd2Fsa2VuX3Nob3dfY29tbWl0LCB3YWxrZW5fc2hvd19vYmplY3QsIE5VTEwsICZvbWl0dGVkKTsKKworCS4uLgorLS0tLQorCitUaGVuLCBhZnRlciB5b3VyIHRyYXZlcnNhbCwgdGhlIGBvaWRzZXRgIHRyYXZlcnNhbCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLgorQ291bnQgYWxsIHRoZSBvYmplY3RzIHdpdGhpbiBhbmQgbW9kaWZ5IHRoZSBwcmludCBzdGF0ZW1lbnQ6CisKKy0tLS0KKwkvKiBDb3VudCB0aGUgb21pdHRlZCBvYmplY3RzLiAqLworCW9pZHNldF9pdGVyX2luaXQoJm9taXR0ZWQsICZvaXQpOworCisJd2hpbGUgKChvaWQgPSBvaWRzZXRfaXRlcl9uZXh0KCZvaXQpKSkKKwkJb21pdHRlZF9jb3VudCsrOworCisJcHJpbnRmKCJjb21taXRzICVkXG5ibG9icyAlZFxudGFncyAlZFxudHJlZXMlZFxub21pdHRlZCAlZFxuIiwKKwkJY29tbWl0X2NvdW50LCBibG9iX2NvdW50LCB0YWdfY291bnQsIHRyZWVfY291bnQsIG9taXR0ZWRfY291bnQpOworLS0tLQorCitCeSBydW5uaW5nIHlvdXIgd2FsayB3aXRoIGFuZCB3aXRob3V0IHRoZSBmaWx0ZXIsIHlvdSBzaG91bGQgZmluZCB0aGF0IHRoZSB0b3RhbAorb2JqZWN0IGNvdW50IGluIGVhY2ggY2FzZSBpcyBpZGVudGljYWwuIFlvdSBjYW4gYWxzbyB0aW1lIGVhY2ggaW52b2NhdGlvbiBvZgordGhlIGB3YWxrZW5gIHN1YmNvbW1hbmQsIHdpdGggYW5kIHdpdGhvdXQgYG9taXR0ZWRgIGJlaW5nIHBhc3NlZCBpbiwgdG8gY29uZmlybQordG8geW91cnNlbGYgdGhlIHJ1bnRpbWUgaW1wYWN0IG9mIHRyYWNraW5nIGFsbCBvbWl0dGVkIG9iamVjdHMuCisKKz09PSBDaGFuZ2luZyB0aGUgT3JkZXIKKworRmluYWxseSwgbGV0J3MgZGVtb25zdHJhdGUgdGhhdCB5b3UgY2FuIGFsc28gcmVvcmRlciB3YWxrcyBvZiBhbGwgb2JqZWN0cywgbm90CitqdXN0IHdhbGtzIG9mIGNvbW1pdHMuIEZpcnN0LCB3ZSdsbCBtYWtlIG91ciBoYW5kbGVycyBjaGF0dGllciAtIG1vZGlmeQorYHdhbGtlbl9zaG93X2NvbW1pdCgpYCBhbmQgYHdhbGtlbl9zaG93X29iamVjdCgpYCB0byBwcmludCB0aGUgb2JqZWN0IGFzIHRoZXkKK2dvOgorCistLS0tCitzdGF0aWMgdm9pZCB3YWxrZW5fc2hvd19jb21taXQoc3RydWN0IGNvbW1pdCAqY210LCB2b2lkICpidWYpCit7CisJdHJhY2VfcHJpbnRmKCJjb21taXQ6ICVzXG4iLCBvaWRfdG9faGV4KCZjbXQtPm9iamVjdC5vaWQpKTsKKwljb21taXRfY291bnQrKzsKK30KKworc3RhdGljIHZvaWQgd2Fsa2VuX3Nob3dfb2JqZWN0KHN0cnVjdCBvYmplY3QgKm9iaiwgY29uc3QgY2hhciAqc3RyLCB2b2lkICpidWYpCit7CisJdHJhY2VfcHJpbnRmKCIlczogJXNcbiIsIHR5cGVfbmFtZShvYmotPnR5cGUpLCBvaWRfdG9faGV4KCZvYmotPm9pZCkpOworCisJLi4uCit9CistLS0tCisKK05PVEU6IFNpbmNlIHdlIHdpbGwgYmUgZXhhbWluaW5nIHRoaXMgb3V0cHV0IGRpcmVjdGx5IGFzIGh1bWFucywgd2UnbGwgdXNlCitgdHJhY2VfcHJpbnRmKClgIGhlcmUuIEFkZGl0aW9uYWxseSwgc2luY2UgdGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhIHNpZ25pZmljYW50CitudW1iZXIgb2YgcHJpbnRlZCBsaW5lcywgdXNpbmcgYHRyYWNlX3ByaW50ZigpYCB3aWxsIGFsbG93IHVzIHRvIGVhc2lseSBzaWxlbmNlCit0aG9zZSBsaW5lcyB3aXRob3V0IGhhdmluZyB0byByZWNvbXBpbGUuCisKKyhMZWF2ZSB0aGUgY291bnRlciBpbmNyZW1lbnQgbG9naWMgaW4gcGxhY2UuKQorCitXaXRoIG9ubHkgdGhhdCBjaGFuZ2UsIHJ1biBhZ2FpbiAoYnV0IHNhdmUgeW91cnNlbGYgc29tZSBzY3JvbGxiYWNrKToKKworLS0tLQorJCBHSVRfVFJBQ0U9MSAuL2Jpbi13cmFwcGVycy9naXQgd2Fsa2VuIHwgaGVhZCAtbiAxMAorLS0tLQorCitUYWtlIGEgbG9vayBhdCB0aGUgdG9wIGNvbW1pdCB3aXRoIGBnaXQgc2hvd2AgYW5kIHRoZSBvYmplY3QgSUQgeW91IHByaW50ZWQ7IGl0CitzaG91bGQgYmUgdGhlIHNhbWUgYXMgdGhlIG91dHB1dCBvZiBgZ2l0IHNob3cgSEVBRGAuCisKK05leHQsIGxldCdzIGNoYW5nZSBhIHNldHRpbmcgb24gb3VyIGBzdHJ1Y3QgcmV2X2luZm9gIHdpdGhpbgorYHdhbGtlbl9vYmplY3Rfd2FsaygpYC4gRmluZCB3aGVyZSB5b3UncmUgY2hhbmdpbmcgdGhlIG90aGVyIHNldHRpbmdzIG9uIGByZXZgLAorc3VjaCBhcyBgcmV2LT50cmVlX29iamVjdHNgIGFuZCBgcmV2LT50cmVlX2Jsb2JzX2luX2NvbW1pdF9vcmRlcmAsIGFuZCBhZGQgdGhlCitgcmV2ZXJzZWAgc2V0dGluZyBhdCB0aGUgYm90dG9tOgorCistLS0tCisJLi4uCisKKwlyZXYtPnRyZWVfb2JqZWN0cyA9IDE7CisJcmV2LT5ibG9iX29iamVjdHMgPSAxOworCXJldi0+dGFnX29iamVjdHMgPSAxOworCXJldi0+dHJlZV9ibG9ic19pbl9jb21taXRfb3JkZXIgPSAxOworCXJldi0+cmV2ZXJzZSA9IDE7CisKKwkuLi4KKy0tLS0KKworTm93LCBydW4gYWdhaW4sIGJ1dCB0aGlzIHRpbWUsIGxldCdzIGdyYWIgdGhlIGxhc3QgaGFuZGZ1bCBvZiBvYmplY3RzIGluc3RlYWQKK29mIHRoZSBmaXJzdCBoYW5kZnVsOgorCistLS0tCiskIG1ha2UKKyQgR0lUX1RSQUNFPTEgLi9iaW4td3JhcHBlcnMgZ2l0IHdhbGtlbiB8IHRhaWwgLW4gMTAKKy0tLS0KKworVGhlIGxhc3QgY29tbWl0IG9iamVjdCBnaXZlbiBzaG91bGQgaGF2ZSB0aGUgc2FtZSBPSUQgYXMgdGhlIG9uZSB3ZSBzYXcgYXQgdGhlCit0b3AgYmVmb3JlLCBhbmQgcnVubmluZyBgZ2l0IHNob3cgPG9pZD5gIHdpdGggdGhhdCBPSUQgc2hvdWxkIGdpdmUgeW91IGFnYWluCit0aGUgc2FtZSByZXN1bHRzIGFzIGBnaXQgc2hvdyBIRUFEYC4gRnVydGhlcm1vcmUsIGlmIHlvdSBydW4gYW5kIGV4YW1pbmUgdGhlCitmaXJzdCB0ZW4gbGluZXMgYWdhaW4gKHdpdGggYGhlYWRgIGluc3RlYWQgb2YgYHRhaWxgIGxpa2Ugd2UgZGlkIGJlZm9yZSBhcHBseWluZwordGhlIGByZXZlcnNlYCBzZXR0aW5nKSwgeW91IHNob3VsZCBzZWUgdGhhdCBub3cgdGhlIGZpcnN0IGNvbW1pdCBwcmludGVkIGlzIHRoZQoraW5pdGlhbCBjb21taXQsIGBlODNjNTE2M2AuCisKKz09IFdyYXBwaW5nIFVwCisKK0xldCdzIHJldmlldy4gSW4gdGhpcyB0dXRvcmlhbCwgd2U6CisKKy0gQnVpbHQgYSBjb21taXQgd2FsayBmcm9tIHRoZSBncm91bmQgdXAKKy0gRW5hYmxlZCBhIGdyZXAgZmlsdGVyIGZvciB0aGF0IGNvbW1pdCB3YWxrCistIENoYW5nZWQgdGhlIHNvcnQgb3JkZXIgb2YgdGhhdCBmaWx0ZXJlZCBjb21taXQgd2FsaworLSBCdWlsdCBhbiBvYmplY3Qgd2FsayAodGFncywgY29tbWl0cywgdHJlZXMsIGFuZCBibG9icykgZnJvbSB0aGUgZ3JvdW5kIHVwCistIExlYXJuZWQgaG93IHRvIGFkZCBhIGZpbHRlci1zcGVjIHRvIGFuIG9iamVjdCB3YWxrCistIENoYW5nZWQgdGhlIGRpc3BsYXkgb3JkZXIgb2YgdGhlIGZpbHRlcmVkIG9iamVjdCB3YWxrCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNS4wLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS41LjAudHh0CmluZGV4IGRhZjRiZGIuLmQ2ZDQyZjMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS41LjAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS41LjAudHh0CkBAIC0yNTEsNyArMjUxLDcgQEAKICAgIHRoZSByZXBvc2l0b3J5IHdoZW4gdGhhdCBoYXBwZW5zLgogCiAKLSogQ3J1ZnRzIHJlbW92YWwKKyogQ3J1ZnQgcmVtb3ZhbAogCiAgLSBXZSB1c2VkIHRvIHNheSAib2xkIGNvbW1pdHMgYXJlIHJldHJpZXZhYmxlIHVzaW5nIHJlZmxvZyBhbmQKICAgICdtYXN0ZXJAe3llc3RlcmRheX0nIHN5bnRheCBhcyBsb25nIGFzIHlvdSBoYXZlbid0IHJ1bgpAQCAtMzc5LDcgKzM3OSw3IEBACiAgLSBUaGUgdmFsdWUgb2YgaTE4bi5jb21taXRlbmNvZGluZyBpbiB0aGUgb3JpZ2luYXRpbmcKICAgIHJlcG9zaXRvcnkgaXMgcmVjb3JkZWQgaW4gdGhlIGNvbW1pdCBvYmplY3Qgb24gdGhlICJlbmNvZGluZyIKICAgIGhlYWRlciwgaWYgaXQgaXMgbm90IFVURi04LiAgZ2l0LWxvZyBhbmQgZnJpZW5kcyBub3RpY2UgdGhpcywKLSAgIGFuZCByZWVuY29kZXMgdGhlIG1lc3NhZ2UgdG8gdGhlIGxvZyBvdXRwdXQgZW5jb2Rpbmcgd2hlbgorICAgYW5kIHJlLWVuY29kZXMgdGhlIG1lc3NhZ2UgdG8gdGhlIGxvZyBvdXRwdXQgZW5jb2Rpbmcgd2hlbgogICAgZGlzcGxheWluZywgaWYgdGhleSBhcmUgZGlmZmVyZW50LiAgVGhlIGxvZyBvdXRwdXQgZW5jb2RpbmcKICAgIGlzIGRldGVybWluZWQgYnkgImdpdCBsb2cgLS1lbmNvZGluZz08ZW5jb2Rpbmc+IiwKICAgIGkxOG4ubG9nb3V0cHV0ZW5jb2RpbmcgY29uZmlndXJhdGlvbiwgb3IgaTE4bi5jb21taXRlbmNvZGluZwpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuNS40LnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS42LjUuNC50eHQKaW5kZXggZDNhMmEzZS4uMzQ0MzMzZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjYuNS40LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNi41LjQudHh0CkBAIC0xMCw3ICsxMCw3IEBACiAKICAqICJnaXQgcHJ1bmUtcGFja2VkIiBnYXZlIHByb2dyZXNzIG91dHB1dCBldmVuIHdoZW4gaXRzIHN0YW5kYXJkIGVycm9yIGlzCiAgICBub3QgY29ubmVjdGVkIHRvIGEgdGVybWluYWw7IHRoaXMgY2F1c2VkIGNyb24gam9icyB0aGF0IHJ1biBpdCB0bwotICAgcHJvZHVjZSBjcnVmdHMuCisgICBwcm9kdWNlIGNydWZ0LgogCiAgKiAiZ2l0IHBhY2stb2JqZWN0cyAtLWFsbC1wcm9ncmVzcyIgaXMgYW4gb3B0aW9uIHRvIGFzayBwcm9ncmVzcyBvdXRwdXQKICAgIGZyb20gd3JpdGUtb2JqZWN0IHBoYXNlIF9pZl8gcHJvZ3Jlc3Mgb3V0cHV0IHdlcmUgdG8gYmUgcHJvZHVjZWQsIGFuZApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMC4yLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjAuMi50eHQKaW5kZXggZmNiNDZjYS4uNzNlZDJiNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuMC4yLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4wLjIudHh0CkBAIC0zNCw3ICszNCw3IEBACiAgKiAiZ2l0IHN0YXR1cyIgaW4gMS43LjAgbGFja2VkIHRoZSBvcHRpbWl6YXRpb24gd2UgdXNlZCB0byBoYXZlIGluIDEuNi5YIHNlcmllcwogICAgdG8gc3BlZWQgdXAgc2Nhbm5pbmcgb2YgbGFyZ2Ugd29ya2luZyB0cmVlLgogCi0gKiAiZ2l0d2ViIiBkaWQgbm90IGRpYWdub3NlIHBhcnNpbmcgZXJyb3JzIHByb3Blcmx5IHdoaWxlIHJlYWRpbmcgdGlzIGNvbmZpZ3VyYXRpb24KKyAqICJnaXR3ZWIiIGRpZCBub3QgZGlhZ25vc2UgcGFyc2luZyBlcnJvcnMgcHJvcGVybHkgd2hpbGUgcmVhZGluZyBpdHMgY29uZmlndXJhdGlvbgogICAgZmlsZS4KIAogQW5kIG90aGVyIG1pbm9yIGZpeGVzIGFuZCBkb2N1bWVudGF0aW9uIHVwZGF0ZXMuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMC40LnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEwLjQudHh0CmluZGV4IDMyNjY3MGQuLjU3NTk3ZjIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEwLjQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEwLjQudHh0CkBAIC03LDcgKzcsNyBAQAogICogVGhlIG1lc3NhZ2UgZmlsZSBmb3IgU3dlZGlzaCB0cmFuc2xhdGlvbiBoYXMgYmVlbiB1cGRhdGVkIGEgYml0LgogCiAgKiBBIG5hbWUgdGFrZW4gZnJvbSBtYWlsbWFwIHdhcyBjb3BpZWQgaW50byBhbiBpbnRlcm5hbCBidWZmZXIKLSAgIGluY29ycmVjdGx5IGFuZCBjb3VsZCBvdmVydW4gdGhlIGJ1ZmZlciBpZiBpdCBpcyB0b28gbG9uZy4KKyAgIGluY29ycmVjdGx5IGFuZCBjb3VsZCBvdmVycnVuIHRoZSBidWZmZXIgaWYgaXQgaXMgdG9vIGxvbmcuCiAKICAqIEEgbWFsZm9ybWVkIGNvbW1pdCBvYmplY3QgdGhhdCBoYXMgYSBoZWFkZXIgbGluZSBjaG9tcGVkIGluIHRoZQogICAgbWlkZGxlIGNvdWxkIGtpbGwgZ2l0IHdpdGggYSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy4xMi4zLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEyLjMudHh0CmluZGV4IGVjZGE0MjcuLjRiODIyOTcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEyLjMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjEyLjMudHh0CkBAIC0yNSw3ICsyNSw3IEBACiAgICBpdHMgQWNjZXB0LUVuY29kaW5nIGhlYWRlci4KIAogICogImdpdCByZWNlaXZlLXBhY2siICh0aGUgY291bnRlcnBhcnQgdG8gImdpdCBwdXNoIikgZGlkIG5vdCBnaXZlCi0gICBwcm9ncmVzcyBvdXRwdXQgd2hpbGUgcHJvY2Vzc2luZyBvYmplY3RzIGl0IHJlY2VpdmVkIHRvIHRoZSBwdXNlcgorICAgcHJvZ3Jlc3Mgb3V0cHV0IHdoaWxlIHByb2Nlc3Npbmcgb2JqZWN0cyBpdCByZWNlaXZlZCB0byB0aGUgdXNlcgogICAgd2hlbiBydW4gb3ZlciB0aGUgc21hcnQtaHR0cCBwcm90b2NvbC4KIAogICogImdpdCBzdGF0dXMiIGhvbm9yZWQgdGhlIGlnbm9yZT1kaXJ0eSBzZXR0aW5ncyBpbiAuZ2l0bW9kdWxlcyBidXQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjUuMy50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuNy41LjMudHh0CmluZGV4IDljMDMzNTMuLjFkMjRlZGMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS43LjUuMy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjcuNS4zLnR4dApAQCAtMjIsNyArMjIsNyBAQAogICogImdpdCBsb2cgLS1zdGRpbiBwYXRoIiB3aXRoIGFuIGlucHV0IHRoYXQgaGFzIGFkZGl0aW9uYWwgcGF0aHNwZWMKICAgIHVzZWQgdG8gY29ycnVwdCBtZW1vcnkuCiAKLSAqICJnaXQgc2VuZC1wYWNrIiAoaGVuY2UgImdpdCBwdXNoIikgb3ZlciBzbWFsdC1IVFRQIHByb3RvY29sIGNvdWxkCisgKiAiZ2l0IHNlbmQtcGFjayIgKGhlbmNlICJnaXQgcHVzaCIpIG92ZXIgc21hcnQtSFRUUCBwcm90b2NvbCBjb3VsZAogICAgZGVhZGxvY2sgd2hlbiB0aGUgY2xpZW50IHNpZGUgcGFjay1vYmplY3QgZGllZCBlYXJseS4KIAogICogQ29tcHJlc3NlZCB0YXJiYWxsIGdpdHdlYiBnZW5lcmF0ZXMgdXNlZCB0byBiZSBtYWRlIHdpdGggdGhlIHRpbWVzdGFtcApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguMC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4wLnR4dAppbmRleCA0Mzg4M2MxLi42M2Q2ZTRhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4wLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC4wLnR4dApAQCAtMjMzLDcgKzIzMyw3IEBACiAgICB0b2dldGhlciwgbWlzZGV0ZWN0ZWQgYnJhbmNoZXMuCiAKICAqICJnaXQgcmVjZWl2ZS1wYWNrIiAodGhlIGNvdW50ZXJwYXJ0IHRvICJnaXQgcHVzaCIpIGRpZCBub3QgZ2l2ZQotICAgcHJvZ3Jlc3Mgb3V0cHV0IHdoaWxlIHByb2Nlc3Npbmcgb2JqZWN0cyBpdCByZWNlaXZlZCB0byB0aGUgcHVzZXIKKyAgIHByb2dyZXNzIG91dHB1dCB3aGlsZSBwcm9jZXNzaW5nIG9iamVjdHMgaXQgcmVjZWl2ZWQgdG8gdGhlIHVzZXIKICAgIHdoZW4gcnVuIG92ZXIgdGhlIHNtYXJ0LWh0dHAgcHJvdG9jb2wuCiAKICAqIFdoZW4geW91IG1pc3NwZWxsIHRoZSBjb21tYW5kIG5hbWUgeW91IGdpdmUgdG8gdGhlICJleGVjIiBhY3Rpb24gaW4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjQuMS50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzEuOC40LjEudHh0CmluZGV4IDk2MDkwZWYuLmMyNTdiZWIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMS44LjQuMS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8xLjguNC4xLnR4dApAQCAtMTUsNyArMTUsNyBAQAogICAgaW4gMS44LjQtcmMxKS4KIAogICogImdpdCByZWJhc2UgLWkiIGFuZCBvdGhlciBzY3JpcHRlZCBjb21tYW5kcyB3ZXJlIGZlZWRpbmcgYQotICAgcmFuZG9tLCBkYXRhIGRlcGVuZGFudCBlcnJvciBtZXNzYWdlIHRvICdlY2hvJyBhbmQgZXhwZWN0aW5nIGl0CisgICByYW5kb20sIGRhdGEgZGVwZW5kZW50IGVycm9yIG1lc3NhZ2UgdG8gJ2VjaG8nIGFuZCBleHBlY3RpbmcgaXQKICAgIHRvIGNvbWUgb3V0IGxpdGVyYWxseS4KIAogICogU2V0dGluZyB0aGUgInN1Ym1vZHVsZS48bmFtZT4ucGF0aCIgdmFyaWFibGUgdG8gdGhlIGVtcHR5CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMS4zLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xLjMudHh0CmluZGV4IGFjYzllYmIuLjBkZmIxN2MgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xLjMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xLjMudHh0CkBAIC0xMyw3ICsxMyw3IEBACiAgICB0aGV5IGFyZSBuZXcgZW5vdWdoIHRvIHN1cHBvcnQgdGhlIGAtLW91dHB1dGAgb3B0aW9uLgogCiAgKiAiZ2l0IHBhY2stb2JqZWN0cyIgZm9yZ290IHRvIGRpc2FibGUgdGhlIGNvZGVwYXRoIHRvIGdlbmVyYXRlCi0gICBvYmplY3QgcmVjaGVhYmlsaXR5IGJpdG1hcCB3aGVuIGl0IG5lZWRzIHRvIHNwbGl0IHRoZSByZXN1bHRpbmcKKyAgIG9iamVjdCByZWFjaGFiaWxpdHkgYml0bWFwIHdoZW4gaXQgbmVlZHMgdG8gc3BsaXQgdGhlIHJlc3VsdGluZwogICAgcGFjay4KIAogICogImdpdHdlYiIgdXNlZCBkZXByZWNhdGVkIENHSTo6c3RhcnRmcm9tLCB3aGljaCB3YXMgcmVtb3ZlZCBmcm9tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTAuMC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTAuMC50eHQKaW5kZXggZjRkYTI4YS4uMzc5MmI3ZCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjEwLjAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xMC4wLnR4dApAQCAtNDc4LDcgKzQ3OCw3IEBACiAgKiBPbmUgcGFydCBvZiAiZ2l0IGFtIiBoYWQgYW4gb2RkYmFsbCBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjYWxsZWQKICAgIHN0dWZmIGZyb20gb3V0c2lkZSAiaGlzIiBhcyBvcHBvc2VkIHRvIGNhbGxpbmcgd2hhdCB3ZSBoYXZlICJvdXJzIiwKICAgIHdoaWNoIHdhcyBub3QgZ2VuZGVyLW5ldXRyYWwgYW5kIGFsc28gaW5jb25zaXN0ZW50IHdpdGggdGhlIHJlc3Qgb2YKLSAgIHRoZSBzeXN0ZW0gd2hlcmUgb3V0c2lkZSBzdHVmZiBpcyB1c3VhbGwgY2FsbGVkICJ0aGVpcnMiIGluCisgICB0aGUgc3lzdGVtIHdoZXJlIG91dHNpZGUgc3R1ZmYgaXMgdXN1YWxseSBjYWxsZWQgInRoZWlycyIgaW4KICAgIGNvbnRyYXN0IHRvICJvdXJzIi4KIAogICogImdpdCBibGFtZSBmaWxlIiBhbGxvd2VkIHRoZSBsaW5lYWdlIG9mIGxpbmVzIGluIHRoZSB1bmNvbW1pdHRlZCwKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xMC4yLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xMC4yLnR4dAppbmRleCBjNGQ0Mzk3Li5hYmJkMzMxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTAuMi50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjEwLjIudHh0CkBAIC04Niw3ICs4Niw3IEBACiAgICBieSByZWZ1c2luZyB0byBjaGVjayBvdXQgYSBicmFuY2ggdGhhdCBpcyBhbHJlYWR5IGNoZWNrZWQgb3V0IGluCiAgICBhbm90aGVyIHdvcmt0cmVlLiAgSG93ZXZlciwgdGhpcyBhbHNvIHByZXZlbnRlZCBjaGVja2luZyBvdXQgYQogICAgYnJhbmNoLCB3aGljaCBpcyBkZXNpZ25hdGVkIGFzIHRoZSBwcmltYXJ5IGJyYW5jaCBvZiBhIGJhcmUKLSAgIHJlb3BzaXRvcnksIGluIGEgd29ya3RyZWUgdGhhdCBpcyBjb25uZWN0ZWQgdG8gdGhlIGJhcmUKKyAgIHJlcG9zaXRvcnksIGluIGEgd29ya3RyZWUgdGhhdCBpcyBjb25uZWN0ZWQgdG8gdGhlIGJhcmUKICAgIHJlcG9zaXRvcnkuICBUaGUgY2hlY2sgaGFzIGJlZW4gY29ycmVjdGVkIHRvIGFsbG93IGl0LgogCiAgKiAiZ2l0IHJlYmFzZSIgaW1tZWRpYXRlbHkgYWZ0ZXIgImdpdCBjbG9uZSIgZmFpbGVkIHRvIGZpbmQgdGhlIGZvcmsKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xMS4xLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xMS4xLnR4dAppbmRleCA5Y2QxNGM4Li43ZDM1Y2YxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTEuMS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjExLjEudHh0CkBAIC0xMDQsNyArMTA0LDcgQEAKICAgICJnaXQgZGlmZnRvb2wgLS1kaXItZGlmZiIgZnJvbSBhIHN1YmRpcmVjdG9yeSBuZXZlciB3b3JrZWQuIFRoaXMKICAgIGhhcyBiZWVuIGZpeGVkLgogCi0gKiAiZ2l0IHA0IiB0aGF0IHRyYWNrcyBtdWx0aWxlIHA0IHBhdGhzIGltcG9ydGVkIGEgc2luZ2xlIGNoYW5nZWxpc3QKKyAqICJnaXQgcDQiIHRoYXQgdHJhY2tzIG11bHRpcGxlIHA0IHBhdGhzIGltcG9ydGVkIGEgc2luZ2xlIGNoYW5nZWxpc3QKICAgIHRoYXQgdG91Y2hlcyBmaWxlcyBpbiB0aGVzZSBtdWx0aXBsZSBwYXRocyBhcyBvbmUgY29tbWl0LCBmb2xsb3dlZAogICAgYnkgbWFueSBlbXB0eSBjb21taXRzLiAgVGhpcyBoYXMgYmVlbiBmaXhlZC4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjEyLjAudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjEyLjAudHh0CmluZGV4IGVmOGI5N2QuLmQyZjZhODMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xMi4wLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTIuMC50eHQKQEAgLTMxNSw3ICszMTUsNyBAQAogICAgImdpdCBkaWZmdG9vbCAtLWRpci1kaWZmIiBmcm9tIGEgc3ViZGlyZWN0b3J5IG5ldmVyIHdvcmtlZC4gVGhpcwogICAgaGFzIGJlZW4gZml4ZWQuCiAKLSAqICJnaXQgcDQiIHRoYXQgdHJhY2tzIG11bHRpbGUgcDQgcGF0aHMgaW1wb3J0ZWQgYSBzaW5nbGUgY2hhbmdlbGlzdAorICogImdpdCBwNCIgdGhhdCB0cmFja3MgbXVsdGlwbGUgcDQgcGF0aHMgaW1wb3J0ZWQgYSBzaW5nbGUgY2hhbmdlbGlzdAogICAgdGhhdCB0b3VjaGVzIGZpbGVzIGluIHRoZXNlIG11bHRpcGxlIHBhdGhzIGFzIG9uZSBjb21taXQsIGZvbGxvd2VkCiAgICBieSBtYW55IGVtcHR5IGNvbW1pdHMuICBUaGlzIGhhcyBiZWVuIGZpeGVkLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTMuMC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTMuMC50eHQKaW5kZXggYWE5OWQ0Yi4uMmE0N2I0YyAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjEzLjAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xMy4wLnR4dApAQCAtMTc3LDcgKzE3Nyw3IEBACiAgICBiZWVuIGNoYW5nZWQgdG8gZW5hYmxlICItLWRlY29yYXRlIi4KIAogICogVGhlIG91dHB1dCBmcm9tICJnaXQgc3RhdHVzIC0tc2hvcnQiIGhhcyBiZWVuIGV4dGVuZGVkIHRvIHNob3cKLSAgIHZhcmlvdXMga2luZHMgb2YgZGlydHluZXNzIGluIHN1Ym1vZHVsZXMgZGlmZmVyZW50bHk7IGluc3RlYWQgb2YgdG8KKyAgIHZhcmlvdXMga2luZHMgb2YgZGlydGluZXNzIGluIHN1Ym1vZHVsZXMgZGlmZmVyZW50bHk7IGluc3RlYWQgb2YgdG8KICAgICJNIiBmb3IgbW9kaWZpZWQsICdtJyBhbmQgJz8nIGNhbiBiZSBzaG93biB0byBzaWduYWwgY2hhbmdlcyBvbmx5CiAgICB0byB0aGUgd29ya2luZyB0cmVlIG9mIHRoZSBzdWJtb2R1bGUgYnV0IG5vdCB0aGUgY29tbWl0IHRoYXQgaXMKICAgIGNoZWNrZWQgb3V0LgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjEzLjMudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjEzLjMudHh0CmluZGV4IDVkNzZhZDUuLjM4NGU0ZGUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xMy4zLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTMuMy50eHQKQEAgLTI1LDcgKzI1LDcgQEAKICAqIFRoZSBjb2RlIHRvIHBpY2sgdXAgYW5kIGV4ZWN1dGUgY29tbWFuZCBhbGlhcyBkZWZpbml0aW9uIGZyb20gdGhlCiAgICBjb25maWd1cmF0aW9uIHVzZWQgdG8gc3dpdGNoIHRvIHRoZSB0b3Agb2YgdGhlIHdvcmtpbmcgdHJlZSBhbmQKICAgIHRoZW4gY29tZSBiYWNrIHdoZW4gdGhlIGV4cGFuZGVkIGFsaWFzIHdhcyBleGVjdXRlZCwgd2hpY2ggd2FzCi0gICB1bm5lY2Vzc2FyaWx5bCBjb21wbGV4LiAgQXR0ZW1wdCB0byBzaW1wbGlmeSB0aGUgbG9naWMgYnkgdXNpbmcgdGhlCisgICB1bm5lY2Vzc2FyaWx5IGNvbXBsZXguICBBdHRlbXB0IHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBieSB1c2luZyB0aGUKICAgIGVhcmx5LWNvbmZpZyBtZWNoYW5pc20gdGhhdCBkb2VzIG5vdCBjaGRpciBhcm91bmQuCiAKICAqICJnaXQgYWRkIC1wIiB3ZXJlIHVwZGF0ZWQgaW4gMi4xMiB0aW1lZnJhbWUgdG8gY29wZSB3aXRoIGN1c3RvbQpAQCAtMzUsNyArMzUsNyBAQAogICogRml4IGEgcmVjZW50IHJlZ3Jlc3Npb24gdG8gImdpdCByZWJhc2UgLWkiIGFuZCBhZGQgdGVzdHMgdGhhdCB3b3VsZAogICAgaGF2ZSBjYXVnaHQgaXQgYW5kIG90aGVycy4KIAotICogQW4gdW5hbGlnbmVkIDMyLWJpdCBhY2Nlc3MgaW4gcGFjay1iaXRtYXAgY29kZSBhaHMgYmVlbiBjb3JyZWN0ZWQuCisgKiBBbiB1bmFsaWduZWQgMzItYml0IGFjY2VzcyBpbiBwYWNrLWJpdG1hcCBjb2RlIGhhcyBiZWVuIGNvcnJlY3RlZC4KIAogICogVGlnaHRlbiBlcnJvciBjaGVja3MgZm9yIGludmFsaWQgImdpdCBhcHBseSIgaW5wdXQuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xNC4wLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xNC4wLnR4dAppbmRleCA0MjQ2YzY4Li4yNzExYTI1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTQuMC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjE0LjAudHh0CkBAIC0xNDEsNyArMTQxLDcgQEAKICAqIFNvbWUgcGxhdGZvcm1zIGhhdmUgdWxvbmcgdGhhdCBpcyBzbWFsbGVyIHRoYW4gdGltZV90LCBhbmQgb3VyCiAgICBoaXN0b3JpY2FsIHVzZSBvZiB1bG9uZyBmb3IgdGltZXN0YW1wIHdvdWxkIG1lYW4gdGhleSBjYW5ub3QKICAgIHJlcHJlc2VudCBzb21lIHRpbWVzdGFtcCB0aGF0IHRoZSBwbGF0Zm9ybSBhbGxvd3MuICBJbnZlbnQgYQotICAgc2VwYXJhdGUgYW5kIGRlZGljYXRlZCB0aW1lc3RhbXBfdCAoc28gdGhhdCB3ZSBjYW4gZGlzdGluZ2l1aXNoCisgICBzZXBhcmF0ZSBhbmQgZGVkaWNhdGVkIHRpbWVzdGFtcF90IChzbyB0aGF0IHdlIGNhbiBkaXN0aW5ndWlzaAogICAgdGltZXN0YW1wcyBhbmQgYSB2YW5pbGxhIHVsb25ncywgd2hpY2ggYWxvbmcgaXMgYWxyZWFkeSBhIGdvb2QKICAgIG1vdmUpLCBhbmQgdGhlbiBkZWNsYXJlIHVpbnRtYXhfdCBpcyB0aGUgdHlwZSB0byBiZSB1c2VkIGFzIHRoZQogICAgdGltZXN0YW1wX3QuCkBAIC00NDIsNyArNDQyLDcgQEAKICAqIFRoZSBjb2RlIHRvIHBpY2sgdXAgYW5kIGV4ZWN1dGUgY29tbWFuZCBhbGlhcyBkZWZpbml0aW9uIGZyb20gdGhlCiAgICBjb25maWd1cmF0aW9uIHVzZWQgdG8gc3dpdGNoIHRvIHRoZSB0b3Agb2YgdGhlIHdvcmtpbmcgdHJlZSBhbmQKICAgIHRoZW4gY29tZSBiYWNrIHdoZW4gdGhlIGV4cGFuZGVkIGFsaWFzIHdhcyBleGVjdXRlZCwgd2hpY2ggd2FzCi0gICB1bm5lY2Vzc2FyaWx5bCBjb21wbGV4LiAgQXR0ZW1wdCB0byBzaW1wbGlmeSB0aGUgbG9naWMgYnkgdXNpbmcgdGhlCisgICB1bm5lY2Vzc2FyaWx5IGNvbXBsZXguICBBdHRlbXB0IHRvIHNpbXBsaWZ5IHRoZSBsb2dpYyBieSB1c2luZyB0aGUKICAgIGVhcmx5LWNvbmZpZyBtZWNoYW5pc20gdGhhdCBkb2VzIG5vdCBjaGRpciBhcm91bmQuCiAKICAqIEZpeCBjb25maWd1cmF0aW9uIGNvZGVwYXRoIHRvIHBheSBwcm9wZXIgYXR0ZW50aW9uIHRvIGNvbW1vbmRpcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjE2LjAudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjE2LjAudHh0CmluZGV4IDBjODFjNTkuLmI0NzQ3ODEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xNi4wLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTYuMC50eHQKQEAgLTQwNyw3ICs0MDcsNyBAQAogICAgKG1lcmdlIGVlZjNkZjVhOTMgYncvcGF0aHNwZWMtbWF0Y2gtc3VibW9kdWxlLWJvdW5kYXJ5IGxhdGVyIHRvIG1haW50KS4KIAogICogQW1lbmRpbmcgY29tbWl0cyBpbiBnaXQtZ3VpIGJyb2tlIHRoZSBhdXRob3IgbmFtZSB0aGF0IGlzIG5vbi1hc2NpaQotICAgZHVlIHRvIGluY29ycmVjdCBlbmNvbmRpbmcgY29udmVyc2lvbi4KKyAgIGR1ZSB0byBpbmNvcnJlY3QgZW5jb2RpbmcgY29udmVyc2lvbi4KIAogICogUmVjZW50IHVwZGF0ZSB0byB0aGUgc3VibW9kdWxlIGNvbmZpZ3VyYXRpb24gY29kZSBicm9rZSAiZGlmZi10cmVlIgogICAgYnkgYWNjaWRlbnRhbGx5IHN0b3BwaW5nIHRvIHJlYWQgZnJvbSB0aGUgaW5kZXggdXBmcm9udC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xNi4zLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xNi4zLnR4dAppbmRleCA2NGEwYmNiLi5mMDEyMWE4IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTYuMy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjE2LjMudHh0CkBAIC0yNCw3ICsyNCw3IEBACiAKICAqIFRoZSBodHRwIHRyYWNpbmcgY29kZSwgb2Z0ZW4gdXNlZCB0byBkZWJ1ZyBjb25uZWN0aW9uIGlzc3VlcywKICAgIGxlYXJuZWQgdG8gcmVkYWN0IHBvdGVudGlhbGx5IHNlbnNpdGl2ZSBpbmZvcm1hdGlvbiBmcm9tIGl0cyBvdXRwdXQKLSAgIHNvIHRoYXQgaXQgY2FuIGJlIG1vcmUgc2FmZWx5IHNoYXJhYmxlLgorICAgc28gdGhhdCBpdCBjYW4gYmUgbW9yZSBzYWZlbHkgc2hhcmVhYmxlLgogCiAgKiBDcmFzaCBmaXggZm9yIGEgY29ybmVyIGNhc2Ugd2hlcmUgYW4gZXJyb3IgY29kZXBhdGggdHJpZWQgdG8gdW5sb2NrCiAgICB3aGF0IGl0IGRpZCBub3QgYWNxdWlyZSBsb2NrIG9uLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjE3LjAudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjE3LjAudHh0CmluZGV4IGMyY2Y4OTEuLjhiMTdjMjYgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xNy4wLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTcuMC50eHQKQEAgLTIxNiw3ICsyMTYsNyBAQAogCiAgKiBUaGUgaHR0cCB0cmFjaW5nIGNvZGUsIG9mdGVuIHVzZWQgdG8gZGVidWcgY29ubmVjdGlvbiBpc3N1ZXMsCiAgICBsZWFybmVkIHRvIHJlZGFjdCBwb3RlbnRpYWxseSBzZW5zaXRpdmUgaW5mb3JtYXRpb24gZnJvbSBpdHMgb3V0cHV0Ci0gICBzbyB0aGF0IGl0IGNhbiBiZSBtb3JlIHNhZmVseSBzaGFyYWJsZS4KKyAgIHNvIHRoYXQgaXQgY2FuIGJlIG1vcmUgc2FmZWx5IHNoYXJlYWJsZS4KICAgIChtZXJnZSA4YmExOGU2ZmE0IGp0L2h0dHAtcmVkYWN0LWNvb2tpZXMgbGF0ZXIgdG8gbWFpbnQpLgogCiAgKiBDcmFzaCBmaXggZm9yIGEgY29ybmVyIGNhc2Ugd2hlcmUgYW4gZXJyb3IgY29kZXBhdGggdHJpZWQgdG8gdW5sb2NrCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTguMC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTguMC50eHQKaW5kZXggM2VhMjgwYy4uNmM4YTBlOSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjE4LjAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xOC4wLnR4dApAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAobWVyZ2UgMDBhM2RhMmExMyBuZC9yZW1vdmUtaWdub3JlLWVudi1maWVsZCBsYXRlciB0byBtYWludCkuCiAKICAqIENvZGUgdG8gZmluZCB0aGUgbGVuZ3RoIHRvIHVuaXF1ZWx5IGFiYnJldmlhdGUgb2JqZWN0IG5hbWVzIGJhc2VkCi0gICBvbiBwYWNrZmlsZSBjb250ZW50LCB3aGljaCBpcyBhIHJlbGF0aXZlbHkgcmVjZW50IGFkZHRpb24sIGhhcyBiZWVuCisgICBvbiBwYWNrZmlsZSBjb250ZW50LCB3aGljaCBpcyBhIHJlbGF0aXZlbHkgcmVjZW50IGFkZGl0aW9uLCBoYXMgYmVlbgogICAgb3B0aW1pemVkIHRvIHVzZSB0aGUgc2FtZSBmYW4tb3V0IHRhYmxlLgogCiAgKiBUaGUgbWVjaGFuaXNtIHRvIHVzZSBwYXJzZS1vcHRpb25zIEFQSSB0byBhdXRvbWF0ZSB0aGUgY29tbWFuZCBsaW5lCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTkuMC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMTkuMC50eHQKaW5kZXggYTA2Y2NmNi4uODkxYzc5YiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjE5LjAudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4xOS4wLnR4dApAQCAtMTA2LDcgKzEwNiw3IEBACiAgKiBUaGUgY29udmVyc2lvbiB0byBwYXNzICJ0aGVfcmVwb3NpdG9yeSIgYW5kIHRoZW4gImFfcmVwb3NpdG9yeSIKICAgIHRocm91Z2hvdXQgdGhlIG9iamVjdCBhY2Nlc3MgQVBJIGNvbnRpbnVlcy4KIAotICogQ29udGludWluZyB3aXRoIHRoZSBpZGVhIHRvIHByb2dyYW1hdGljYWxseSBlbnVtZXJhdGUgdmFyaW91cworICogQ29udGludWluZyB3aXRoIHRoZSBpZGVhIHRvIHByb2dyYW1tYXRpY2FsbHkgZW51bWVyYXRlIHZhcmlvdXMKICAgIHBpZWNlcyBvZiBkYXRhIHJlcXVpcmVkIGZvciBjb21tYW5kIGxpbmUgY29tcGxldGlvbiwgdGVhY2ggdGhlCiAgICBjb2RlYmFzZSB0byByZXBvcnQgdGhlIGxpc3Qgb2YgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKICAgIHN1YmNvbW1hbmRzIGNhcmUgYWJvdXQgdG8gaGVscCBjb21wbGV0ZSB0aGVtLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjIwLjAudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjIwLjAudHh0CmluZGV4IGU3MWZlM2QuLjNkZDdlNmUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4yMC4wLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMjAuMC50eHQKQEAgLTExOSw3ICsxMTksNyBAQAogICAgYWxpYXMgZXhwYW5zaW9uLgogCiAgKiBUaGUgZG9jdW1lbnRhdGlvbiBvZiAiZ2l0IGdjIiBoYXMgYmVlbiB1cGRhdGVkIHRvIG1lbnRpb24gdGhhdCBpdAotICAgaXMgbm8gbG9uZ2VyIGxpbWl0ZWQgdG8gInBydW5pbmcgYXdheSBjcnVmdHMiIGJ1dCBhbHNvIHVwZGF0ZXMKKyAgIGlzIG5vIGxvbmdlciBsaW1pdGVkIHRvICJwcnVuaW5nIGF3YXkgY3J1ZnQiIGJ1dCBhbHNvIHVwZGF0ZXMKICAgIGFuY2lsbGFyeSBmaWxlcyBsaWtlIGNvbW1pdC1ncmFwaCBhcyBhIHBhcnQgb2YgcmVwb3NpdG9yeQogICAgb3B0aW1pemF0aW9uLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMjUuMC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMjUuMC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxYjY5ZgotLS0gL2Rldi9udWxsCisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4yNS4wLnR4dApAQCAtMCwwICsxLDY4IEBACitHaXQgMi4yNSBSZWxlYXNlIE5vdGVzCis9PT09PT09PT09PT09PT09PT09PT09CisKK1VwZGF0ZXMgc2luY2UgdjIuMjQKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKworQmFja3dhcmQgY29tcGF0aWJpbGl0eSBub3RlcworCisKK1VJLCBXb3JrZmxvd3MgJiBGZWF0dXJlcworCisgKiBBIHR1dG9yaWFsIG9uIG9iamVjdCBlbnVtZXJhdGlvbiBoYXMgYmVlbiBhZGRlZC4KKworICogVGhlIGJyYW5jaCBkZXNjcmlwdGlvbiAoImdpdCBicmFuY2ggLS1lZGl0LWRlc2NyaXB0aW9uIikgaGFzIGJlZW4KKyAgIHVzZWQgdG8gZmlsbCB0aGUgYm9keSBvZiB0aGUgY292ZXIgbGV0dGVycyBieSB0aGUgZm9ybWF0LXBhdGNoCisgICBjb21tYW5kOyB0aGlzIGhhcyBiZWVuIGVuaGFuY2VkIHNvIHRoYXQgdGhlIHN1YmplY3QgY2FuIGFsc28gYmUKKyAgIGZpbGxlZC4KKworICogImdpdCByZWJhc2UgLS1wcmVzZXJ2ZS1tZXJnZXMiIGhhcyBiZWVuIG1hcmtlZCBhcyBkZXByZWNhdGVkOyB0aGlzCisgICByZWxlYXNlIHN0b3BzIGFkdmVydGlzaW5nIGl0IGluIHRoZSAiZ2l0IHJlYmFzZSAtaCIgb3V0cHV0LgorCisgKiBUaGUgY29kZSB0byBnZW5lcmF0ZSBtdWx0aS1wYWNrIGluZGV4IGxlYXJuZWQgdG8gc2hvdyAob3Igbm90IHRvCisgICBzaG93KSBwcm9ncmVzcyBpbmRpY2F0b3JzLgorCisgKiAiZ2l0IGFwcGx5IC0tM3dheSIgbGVhcm5lZCB0byBob25vciBtZXJnZS5jb25mbGljdFN0eWxlCisgICBjb25maWd1cmF0aW9uIHZhcmlhYmxlLCBsaWtlIG1lcmdlcyB3b3VsZC4KKworICogVGhlIGN1c3RvbSBmb3JtYXQgZm9yICJnaXQgbG9nIC0tZm9ybWF0PTxmb3JtYXQ+IiBsZWFybmVkIHRoZSBsL0wKKyAgIHBsYWNlaG9sZGVyIHRoYXQgaXMgc2ltaWxhciB0byBlL0UgdGhhdCBmaWxscyBpbiB0aGUgZS1tYWlsCisgICBhZGRyZXNzLCBidXQgb25seSB0aGUgbG9jYWwgcGFydCBvbiB0aGUgbGVmdCBzaWRlIG9mICdAJy4KKworCitQZXJmb3JtYW5jZSwgSW50ZXJuYWwgSW1wbGVtZW50YXRpb24sIERldmVsb3BtZW50IFN1cHBvcnQgZXRjLgorCisgKiBEZWJ1Z2dpbmcgc3VwcG9ydCBmb3IgbGF6eSBjbG9uaW5nIGhhcyBiZWVuIGEgYml0IGltcHJvdmVkLgorCisgKiBNb3ZlIHRoZSBkZWZpbml0aW9uIG9mIGEgc2V0IG9mIGJpdG1hc2sgY29uc3RhbnRzIGZyb20gMGN0YWwKKyAgIGxpdGVyYWwgdG8gKDFVPDxjb3VudCkgbm90YXRpb24uCisKKyAqIFRlc3QgdXBkYXRlcyB0byBwcmVwYXJlIGZvciBTSEEtMiB0cmFuc2l0aW9uIGNvbnRpbnVlcy4KKworCitGaXhlcyBzaW5jZSB2Mi4yNAorLS0tLS0tLS0tLS0tLS0tLS0KKworICogInJlYmFzZSAtaSIgY2Vhc2VkIHRvIHJ1biBwb3N0LWNvbW1pdCBob29rIGJ5IG1pc3Rha2UgaW4gYW4gZWFybGllcgorICAgdXBkYXRlLCB3aGljaCBoYXMgYmVlbiBjb3JyZWN0ZWQuCisKKyAqICJnaXQgbm90ZXMgY29weSAkb3JpZ2luYWwiIG91Z2h0IHRvIGNvcHkgdGhlIG5vdGVzIGF0dGFjaGVkIHRvIHRoZQorICAgb3JpZ2luYWwgb2JqZWN0IHRvIEhFQUQsIGJ1dCBhIG1pc3Rha2VuIHRpZ2h0ZW5pbmcgdG8gY29tbWFuZCBsaW5lCisgICBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBtYWRlIGVhcmxpZXIgZGlzYWJsZWQgdGhhdCBmZWF0dXJlIGJ5IG1pc3Rha2UuCisKKyAqIFdoZW4gYWxsIGZpbGVzIGZyb20gc29tZSBzdWJkaXJlY3Rvcnkgd2VyZSByZW5hbWVkIHRvIHRoZSByb290CisgICBkaXJlY3RvcnksIHRoZSBkaXJlY3RvcnkgcmVuYW1lIGhldXJpc3RpY3Mgd291bGQgZmFpbCB0byBkZXRlY3QgdGhhdAorICAgYXMgYSByZW5hbWUvbWVyZ2Ugb2YgdGhlIHN1YmRpcmVjdG9yeSB0byB0aGUgcm9vdCBkaXJlY3RvcnksIHdoaWNoIGhhcworICAgYmVlbiBjb3JyZWN0ZWQuCisKKyAqIENvZGUgY2xlYW4tdXAgYW5kIGEgYnVnZml4IGluIHRoZSBsb2dpYyB1c2VkIHRvIHRlbGwgd29ya3RyZWUgbG9jYWwKKyAgIGFuZCByZXBvc2l0b3J5IGdsb2JhbCByZWZzIGFwYXJ0LgorICAgKG1lcmdlIGY0NWY4OGIyZTQgc2cvZGlyLXRyaWUtZml4ZXMgbGF0ZXIgdG8gbWFpbnQpLgorCisgKiAiZ2l0IHN0YXNoIHNhdmUiIGluIGEgd29ya2luZyB0cmVlIHRoYXQgaXMgc3BhcnNlbHkgY2hlY2tlZCBvdXQKKyAgIG1pc3Rha2VubHkgcmVtb3ZlZCBwYXRocyB0aGF0IGFyZSBvdXRzaWRlIHRoZSBhcmVhIG9mIGludGVyZXN0LgorICAgKG1lcmdlIDRhNThjM2Q3ZjcganMvdXBkYXRlLWluZGV4LWlnbm9yZS1yZW1vdmFsLWZvci1za2lwLXdvcmt0cmVlIGxhdGVyIHRvIG1haW50KS4KKworICogT3RoZXIgY29kZSBjbGVhbnVwLCBkb2NmaXgsIGJ1aWxkIGZpeCwgZXRjLgorICAgKG1lcmdlIDgwNzM2ZDdjNWUgamMvYW0tc2hvdy1jdXJyZW50LXBhdGNoLWRvY2ZpeCBsYXRlciB0byBtYWludCkuCisgICAobWVyZ2UgOGI2NTY1NzJjYSBzZy9jb21taXQtZ3JhcGgtdXNhZ2UtZml4IGxhdGVyIHRvIG1haW50KS4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4zLjMudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjMuMy50eHQKaW5kZXggNWVmMTI2NC4uODUwZGM2OCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjMuMy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjMuMy50eHQKQEAgLTEyLDcgKzEyLDcgQEAKICAqIERlc2NyaXB0aW9uIGdpdmVuIGJ5ICJncmVwIC1oIiBmb3IgaXRzIC0tZXhjbHVkZS1zdGFuZGFyZCBvcHRpb24KICAgIHdhcyBwaHJhc2VkIHBvb3JseS4KIAotICogRG9jdW1lbnRhdG9uIGZvciAiZ2l0IHJlbW90ZSBhZGQiIG1lbnRpb25lZCAiLS10YWdzIiBhbmQKKyAqIERvY3VtZW50YXRpb24gZm9yICJnaXQgcmVtb3RlIGFkZCIgbWVudGlvbmVkICItLXRhZ3MiIGFuZAogICAgIi0tbm8tdGFncyIgYW5kIGl0IHdhcyBub3QgY2xlYXIgdGhhdCBmZXRjaCBmcm9tIHRoZSByZW1vdGUgaW4KICAgIHRoZSBmdXR1cmUgd2lsbCB1c2UgdGhlIGRlZmF1bHQgYmVoYXZpb3VyIHdoZW4gbmVpdGhlciBpcyBnaXZlbgogICAgdG8gb3ZlcnJpZGUgaXQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuMy43LnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4zLjcudHh0CmluZGV4IGZjOTU4MTIuLjU3NjkxODQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4zLjcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4zLjcudHh0CkBAIC00LDcgKzQsNyBAQAogRml4ZXMgc2luY2UgdjIuMy42CiAtLS0tLS0tLS0tLS0tLS0tLS0KIAotICogQW4gZWFybGllciB1cGRhdGUgdG8gdGhlIHBhcnNlciB0aGF0IGRpc2VjdHMgYSBVUkwgYnJva2UgYW4KKyAqIEFuIGVhcmxpZXIgdXBkYXRlIHRvIHRoZSBwYXJzZXIgdGhhdCBkaXNzZWN0cyBhIFVSTCBicm9rZSBhbgogICAgYWRkcmVzcywgZm9sbG93ZWQgYnkgYSBjb2xvbiwgZm9sbG93ZWQgYnkgYW4gZW1wdHkgc3RyaW5nIChpbnN0ZWFkCiAgICBvZiB0aGUgcG9ydCBudW1iZXIpLCBlLmcuIHNzaDovL2V4YW1wbGUuY29tOi9wYXRoL3RvL3JlcG8uCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi40LjMudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjQuMy50eHQKaW5kZXggOTE0ZDJjMS4uNDIyZTkzMCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjQuMy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjQuMy50eHQKQEAgLTY2LDcgKzY2LDcgQEAKICAqIFNvbWUgdGltZSBhZ28sICJnaXQgYmxhbWUiIChpbmNvcnJlY3RseSkgbG9zdCB0aGUgY29udmVydF90b19naXQoKQogICAgY2FsbCB3aGVuIHN5bnRoZXNpemluZyBhIGZha2UgInRpcCIgY29tbWl0IHRoYXQgcmVwcmVzZW50cyB0aGUKICAgIHN0YXRlIGluIHRoZSB3b3JraW5nIHRyZWUsIHdoaWNoIGJyb2tlIGZvbGtzIHdobyByZWNvcmQgdGhlIGhpc3RvcnkKLSAgIHdpdGggTEYgbGluZSBlbmRpbmcgdG8gbWFrZSB0aGVpciBwcm9qZWN0IHBvcnRhYmlsZSBhY3Jvc3MKKyAgIHdpdGggTEYgbGluZSBlbmRpbmcgdG8gbWFrZSB0aGVpciBwcm9qZWN0IHBvcnRhYmxlIGFjcm9zcwogICAgcGxhdGZvcm1zIHdoaWxlIHRlcm1pbmF0aW5nIGxpbmVzIGluIHRoZWlyIHdvcmtpbmcgdHJlZSBmaWxlcyB3aXRoCiAgICBDUkxGIGZvciB0aGVpciBwbGF0Zm9ybS4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjcuMC50eHQgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuNy4wLnR4dAppbmRleCA1NjNkYWRjLi5lM2NiZjNhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuNy4wLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuNy4wLnR4dApAQCAtNDAsNyArNDAsNyBAQAogCiAgKiAiZ2l0IGludGVycHJldC10cmFpbGVycyIgY2FuIG5vdyBydW4gb3V0c2lkZSBvZiBhIEdpdCByZXBvc2l0b3J5LgogCi0gKiAiZ2l0IHA0IiBsZWFybmVkIHRvIHJlZW5jb2RlIHRoZSBwYXRobmFtZSBpdCB1c2VzIHRvIGNvbW11bmljYXRlCisgKiAiZ2l0IHA0IiBsZWFybmVkIHRvIHJlLWVuY29kZSB0aGUgcGF0aG5hbWUgaXQgdXNlcyB0byBjb21tdW5pY2F0ZQogICAgd2l0aCB0aGUgcDQgZGVwb3Qgd2l0aCBhIG5ldyBvcHRpb24uCiAKICAqIEdpdmUgcHJvZ3Jlc3MgbWV0ZXIgdG8gImdpdCBmaWx0ZXItYnJhbmNoIi4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi44LjAudHh0IGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjguMC50eHQKaW5kZXggNWZiZTFiOC4uMjczMjBiNiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjguMC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9SZWxOb3Rlcy8yLjguMC50eHQKQEAgLTE4OSw3ICsxODksNyBAQAogICogU29tZSBjYWxscyB0byBzdHJjcHkoMykgdHJpZ2dlcnMgYSBmYWxzZSB3YXJuaW5nIGZyb20gc3RhdGljCiAgICBhbmFseXplcnMgdGhhdCBhcmUgbGVzcyBpbnRlbGxpZ2VudCB0aGFuIGh1bWFucywgYW5kIHJlZHVjaW5nIHRoZQogICAgbnVtYmVyIG9mIHRoZXNlIGZhbHNlIGhpdHMgaGVscHMgdXMgbm90aWNlIHJlYWwgaXNzdWVzLiAgQSBmZXcKLSAgIGNhbGxzIHRvIHN0cmNweSgzKSBpbiBhIGNvdXBsZSBvZiBwcm90cmFtcyB0aGF0IGFyZSBhbHJlYWR5IHNhZmUKKyAgIGNhbGxzIHRvIHN0cmNweSgzKSBpbiBhIGNvdXBsZSBvZiBwcm9ncmFtcyB0aGF0IGFyZSBhbHJlYWR5IHNhZmUKICAgIGhhcyBiZWVuIHJld3JpdHRlbiB0byBhdm9pZCBmYWxzZSB3YXJuaW5ncy4KIAogICogVGhlICJuYW1lX3BhdGgiIEFQSSB3YXMgYW4gYXR0ZW1wdCB0byByZWR1Y2UgdGhlIG5lZWQgdG8gY29uc3RydWN0CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL1JlbE5vdGVzLzIuOS4zLnR4dCBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi45LjMudHh0CmluZGV4IDY5NWI4NmYuLjMwNWUwODAgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi45LjMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi45LjMudHh0CkBAIC0zNiw3ICszNiw3IEBACiAgKiBPbmUgcGFydCBvZiAiZ2l0IGFtIiBoYWQgYW4gb2RkYmFsbCBoZWxwZXIgZnVuY3Rpb24gdGhhdCBjYWxsZWQKICAgIHN0dWZmIGZyb20gb3V0c2lkZSAiaGlzIiBhcyBvcHBvc2VkIHRvIGNhbGxpbmcgd2hhdCB3ZSBoYXZlICJvdXJzIiwKICAgIHdoaWNoIHdhcyBub3QgZ2VuZGVyLW5ldXRyYWwgYW5kIGFsc28gaW5jb25zaXN0ZW50IHdpdGggdGhlIHJlc3Qgb2YKLSAgIHRoZSBzeXN0ZW0gd2hlcmUgb3V0c2lkZSBzdHVmZiBpcyB1c3VhbGwgY2FsbGVkICJ0aGVpcnMiIGluCisgICB0aGUgc3lzdGVtIHdoZXJlIG91dHNpZGUgc3R1ZmYgaXMgdXN1YWxseSBjYWxsZWQgInRoZWlycyIgaW4KICAgIGNvbnRyYXN0IHRvICJvdXJzIi4KIAogICogVGhlIHRlc3QgZnJhbWV3b3JrIGxlYXJuZWQgYSBuZXcgaGVscGVyIHRlc3RfbWF0Y2hfc2lnbmFsIHRvCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL2NvbmZpZy50eHQKaW5kZXggZjUwZjFiNC4uODNlN2JiYSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9jb25maWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vY29uZmlnLnR4dApAQCAtMTQyLDcgKzE0Miw3IEBACiAKIGBnaXRkaXIvaWA6OgogCVRoaXMgaXMgdGhlIHNhbWUgYXMgYGdpdGRpcmAgZXhjZXB0IHRoYXQgbWF0Y2hpbmcgaXMgZG9uZQotCWNhc2UtaW5zZW5zaXRpdmVseSAoZS5nLiBvbiBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3l0ZW1zKQorCWNhc2UtaW5zZW5zaXRpdmVseSAoZS5nLiBvbiBjYXNlLWluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtcykKIAogYG9uYnJhbmNoYDo6CiAJVGhlIGRhdGEgdGhhdCBmb2xsb3dzIHRoZSBrZXl3b3JkIGBvbmJyYW5jaDpgIGlzIHRha2VuIHRvIGJlIGEKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vY29uZmlnL2Zvcm1hdC50eHQgYi9Eb2N1bWVudGF0aW9uL2NvbmZpZy9mb3JtYXQudHh0CmluZGV4IDQwY2FkOTIuLjUxM2ZjZDggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vY29uZmlnL2Zvcm1hdC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9jb25maWcvZm9ybWF0LnR4dApAQCAtMzYsNiArMzYsMTIgQEAKIAlUaGUgZGVmYXVsdCBmb3IgZm9ybWF0LXBhdGNoIGlzIHRvIG91dHB1dCBmaWxlcyB3aXRoIHRoZSAnW1BBVENIXScKIAlzdWJqZWN0IHByZWZpeC4gVXNlIHRoaXMgdmFyaWFibGUgdG8gY2hhbmdlIHRoYXQgcHJlZml4LgogCitmb3JtYXQuY292ZXJGcm9tRGVzY3JpcHRpb246OgorCVRoZSBkZWZhdWx0IG1vZGUgZm9yIGZvcm1hdC1wYXRjaCB0byBkZXRlcm1pbmUgd2hpY2ggcGFydHMgb2YKKwl0aGUgY292ZXIgbGV0dGVyIHdpbGwgYmUgcG9wdWxhdGVkIHVzaW5nIHRoZSBicmFuY2gncworCWRlc2NyaXB0aW9uLiBTZWUgdGhlIGAtLWNvdmVyLWZyb20tZGVzY3JpcHRpb25gIG9wdGlvbiBpbgorCWxpbmtnaXQ6Z2l0LWZvcm1hdC1wYXRjaFsxXS4KKwogZm9ybWF0LnNpZ25hdHVyZTo6CiAJVGhlIGRlZmF1bHQgZm9yIGZvcm1hdC1wYXRjaCBpcyB0byBvdXRwdXQgYSBzaWduYXR1cmUgY29udGFpbmluZwogCXRoZSBHaXQgdmVyc2lvbiBudW1iZXIuIFVzZSB0aGlzIHZhcmlhYmxlIHRvIGNoYW5nZSB0aGF0IGRlZmF1bHQuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2NvbmZpZy90YWcudHh0IGIvRG9jdW1lbnRhdGlvbi9jb25maWcvdGFnLnR4dAppbmRleCBlZjVhZGIzLi42ZDkxMTBkIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2NvbmZpZy90YWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vY29uZmlnL3RhZy50eHQKQEAgLTEzLDcgKzEzLDcgQEAKIAlVc2Ugb2YgdGhpcyBvcHRpb24gd2hlbiBydW5uaW5nIGluIGFuIGF1dG9tYXRlZCBzY3JpcHQgY2FuCiAJcmVzdWx0IGluIGEgbGFyZ2UgbnVtYmVyIG9mIHRhZ3MgYmVpbmcgc2lnbmVkLiBJdCBpcyB0aGVyZWZvcmUKIAljb252ZW5pZW50IHRvIHVzZSBhbiBhZ2VudCB0byBhdm9pZCB0eXBpbmcgeW91ciBncGcgcGFzc3BocmFzZQotCXNldmVyYWwgdGltZXMuIE5vdGUgdGhhdCB0aGlzIG9wdGlvbiBkb2Vzbid0IGFmZmVjdHMgdGFnIHNpZ25pbmcKKwlzZXZlcmFsIHRpbWVzLiBOb3RlIHRoYXQgdGhpcyBvcHRpb24gZG9lc24ndCBhZmZlY3QgdGFnIHNpZ25pbmcKIAliZWhhdmlvciBlbmFibGVkIGJ5ICItdSA8a2V5aWQ+IiBvciAiLS1sb2NhbC11c2VyPTxrZXlpZD4iIG9wdGlvbnMuCiAKIHRhci51bWFzazo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2ZldGNoLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9mZXRjaC1vcHRpb25zLnR4dAppbmRleCA0M2I5ZmYzLi5hMmY3ODYyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2ZldGNoLW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZmV0Y2gtb3B0aW9ucy50eHQKQEAgLTkyLDYgKzkyLDEwIEBACiAJUnVuIGBnaXQgZ2MgLS1hdXRvYCBhdCB0aGUgZW5kIHRvIHBlcmZvcm0gZ2FyYmFnZSBjb2xsZWN0aW9uCiAJaWYgbmVlZGVkLiBUaGlzIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4KIAorLS1bbm8tXXdyaXRlLWNvbW1pdC1ncmFwaDo6CisJV3JpdGUgYSBjb21taXQtZ3JhcGggYWZ0ZXIgZmV0Y2hpbmcuIFRoaXMgb3ZlcnJpZGVzIHRoZSBjb25maWcKKwlzZXR0aW5nIGBmZXRjaC53cml0ZUNvbW1pdEdyYXBoYC4KKwogLXA6OgogLS1wcnVuZTo6CiAJQmVmb3JlIGZldGNoaW5nLCByZW1vdmUgYW55IHJlbW90ZS10cmFja2luZyByZWZlcmVuY2VzIHRoYXQgbm8KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWFtLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWFtLnR4dAppbmRleCBmYzNiOTkzLi5mYzU3NTBiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1hbS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtYW0udHh0CkBAIC0xNzcsNyArMTc3LDcgQEAKIAl1bnRvdWNoZWQuCiAKIC0tc2hvdy1jdXJyZW50LXBhdGNoOjoKLQlTaG93IHRoZSBwYXRjaCBiZWluZyBhcHBsaWVkIHdoZW4gImdpdCBhbSIgaXMgc3RvcHBlZCBiZWNhdXNlCisJU2hvdyB0aGUgZW50aXJlIGUtbWFpbCBtZXNzYWdlICJnaXQgYW0iIGhhcyBzdG9wcGVkIGF0LCBiZWNhdXNlCiAJb2YgY29uZmxpY3RzLgogCiBESVNDVVNTSU9OCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1iaXNlY3QtbGsyMDA5LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC1sazIwMDkudHh0CmluZGV4IGU5OTkyNTEuLjI5NTdiYzUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC1sazIwMDkudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC1sazIwMDkudHh0CkBAIC0xNTgsNyArMTU4LDcgQEAKIHN1cHBvc2VkIHRvIGJlIHVzZWQgc28gdGhhdCBhbGwgdGhlIHRlc3RzIGFyZSBjaGVja2VkIGFmdGVyIGVhY2gKIGNvbW1pdC4gVGhpcyBtZWFucyB0aGF0IHRoZXkgYXJlIG5vdCB2ZXJ5IGVmZmljaWVudCwgYmVjYXVzZSBtYW55CiB0ZXN0cyBhcmUgcnVuIGZvciBubyBpbnRlcmVzdGluZyByZXN1bHQsIGFuZCB0aGV5IHN1ZmZlciBmcm9tCi1jb21iaW5hdGlvbmFsIGV4cGxvc2lvbi4KK2NvbWJpbmF0b3JpYWwgZXhwbG9zaW9uLgogCiBJbiBmYWN0IHRoZSBwcm9ibGVtIGlzIHRoYXQgYmlnIHNvZnR3YXJlIG9mdGVuIGhhcyBtYW55IGRpZmZlcmVudAogY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCB0aGF0IGVhY2ggdGVzdCBjYXNlIHNob3VsZCBwYXNzIGZvciBlYWNoCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1iaXNlY3QudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYmlzZWN0LnR4dAppbmRleCA0YjQ1ZDgzLi43NTg2YzVhIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1iaXNlY3QudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWJpc2VjdC50eHQKQEAgLTQxMyw3ICs0MTMsNyBAQAogCiAjIHR3ZWFrIHRoZSB3b3JraW5nIHRyZWUgYnkgbWVyZ2luZyB0aGUgaG90LWZpeCBicmFuY2gKICMgYW5kIHRoZW4gYXR0ZW1wdCBhIGJ1aWxkCi1pZglnaXQgbWVyZ2UgLS1uby1jb21taXQgaG90LWZpeCAmJgoraWYJZ2l0IG1lcmdlIC0tbm8tY29tbWl0IC0tbm8tZmYgaG90LWZpeCAmJgogCW1ha2UKIHRoZW4KIAkjIHJ1biBwcm9qZWN0IHNwZWNpZmljIHRlc3QgYW5kIHJlcG9ydCBpdHMgc3RhdHVzCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1idW5kbGUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtYnVuZGxlLnR4dAppbmRleCA3ZDZjOWRjLi5jY2FkYTgwIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1idW5kbGUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWJ1bmRsZS50eHQKQEAgLTksOCArOSw4IEBACiBTWU5PUFNJUwogLS0tLS0tLS0KIFt2ZXJzZV0KLSdnaXQgYnVuZGxlJyBjcmVhdGUgPGZpbGU+IDxnaXQtcmV2LWxpc3QtYXJncz4KLSdnaXQgYnVuZGxlJyB2ZXJpZnkgPGZpbGU+CisnZ2l0IGJ1bmRsZScgY3JlYXRlIFstcSB8IC0tcXVpZXQgfCAtLXByb2dyZXNzIHwgLS1hbGwtcHJvZ3Jlc3NdIFstLWFsbC1wcm9ncmVzcy1pbXBsaWVkXSA8ZmlsZT4gPGdpdC1yZXYtbGlzdC1hcmdzPgorJ2dpdCBidW5kbGUnIHZlcmlmeSBbLXEgfCAtLXF1aWV0XSA8ZmlsZT4KICdnaXQgYnVuZGxlJyBsaXN0LWhlYWRzIDxmaWxlPiBbPHJlZm5hbWU+Li4uXQogJ2dpdCBidW5kbGUnIHVuYnVuZGxlIDxmaWxlPiBbPHJlZm5hbWU+Li4uXQogCkBAIC0zMyw5ICszMywxMSBAQAogT1BUSU9OUwogLS0tLS0tLQogCi1jcmVhdGUgPGZpbGU+OjoKK2NyZWF0ZSBbb3B0aW9uc10gPGZpbGU+IDxnaXQtcmV2LWxpc3QtYXJncz46OgogCVVzZWQgdG8gY3JlYXRlIGEgYnVuZGxlIG5hbWVkICdmaWxlJy4gIFRoaXMgcmVxdWlyZXMgdGhlCiAJJ2dpdC1yZXYtbGlzdC1hcmdzJyBhcmd1bWVudHMgdG8gZGVmaW5lIHRoZSBidW5kbGUgY29udGVudHMuCisJJ29wdGlvbnMnIGNvbnRhaW5zIHRoZSBvcHRpb25zIHNwZWNpZmljIHRvIHRoZSAnZ2l0IGJ1bmRsZSBjcmVhdGUnCisJc3ViY29tbWFuZC4KIAogdmVyaWZ5IDxmaWxlPjo6CiAJVXNlZCB0byBjaGVjayB0aGF0IGEgYnVuZGxlIGZpbGUgaXMgdmFsaWQgYW5kIHdpbGwgYXBwbHkKQEAgLTc1LDYgKzc3LDMzIEBACiAJbmVjZXNzYXJpbHkgZXZlcnl0aGluZyBpbiB0aGUgcGFjayAoaW4gdGhpcyBjYXNlLCAnZ2l0IGJ1bmRsZScgYWN0cwogCWxpa2UgJ2dpdCBmZXRjaC1wYWNrJykuCiAKKy0tcHJvZ3Jlc3M6OgorCVByb2dyZXNzIHN0YXR1cyBpcyByZXBvcnRlZCBvbiB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtCisJYnkgZGVmYXVsdCB3aGVuIGl0IGlzIGF0dGFjaGVkIHRvIGEgdGVybWluYWwsIHVubGVzcyAtcQorCWlzIHNwZWNpZmllZC4gVGhpcyBmbGFnIGZvcmNlcyBwcm9ncmVzcyBzdGF0dXMgZXZlbiBpZgorCXRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0gaXMgbm90IGRpcmVjdGVkIHRvIGEgdGVybWluYWwuCisKKy0tYWxsLXByb2dyZXNzOjoKKwlXaGVuIC0tc3Rkb3V0IGlzIHNwZWNpZmllZCB0aGVuIHByb2dyZXNzIHJlcG9ydCBpcworCWRpc3BsYXllZCBkdXJpbmcgdGhlIG9iamVjdCBjb3VudCBhbmQgY29tcHJlc3Npb24gcGhhc2VzCisJYnV0IGluaGliaXRlZCBkdXJpbmcgdGhlIHdyaXRlLW91dCBwaGFzZS4gVGhlIHJlYXNvbiBpcworCXRoYXQgaW4gc29tZSBjYXNlcyB0aGUgb3V0cHV0IHN0cmVhbSBpcyBkaXJlY3RseSBsaW5rZWQKKwl0byBhbm90aGVyIGNvbW1hbmQgd2hpY2ggbWF5IHdpc2ggdG8gZGlzcGxheSBwcm9ncmVzcworCXN0YXR1cyBvZiBpdHMgb3duIGFzIGl0IHByb2Nlc3NlcyBpbmNvbWluZyBwYWNrIGRhdGEuCisJVGhpcyBmbGFnIGlzIGxpa2UgLS1wcm9ncmVzcyBleGNlcHQgdGhhdCBpdCBmb3JjZXMgcHJvZ3Jlc3MKKwlyZXBvcnQgZm9yIHRoZSB3cml0ZS1vdXQgcGhhc2UgYXMgd2VsbCBldmVuIGlmIC0tc3Rkb3V0IGlzCisJdXNlZC4KKworLS1hbGwtcHJvZ3Jlc3MtaW1wbGllZDo6CisJVGhpcyBpcyB1c2VkIHRvIGltcGx5IC0tYWxsLXByb2dyZXNzIHdoZW5ldmVyIHByb2dyZXNzIGRpc3BsYXkKKwlpcyBhY3RpdmF0ZWQuICBVbmxpa2UgLS1hbGwtcHJvZ3Jlc3MgdGhpcyBmbGFnIGRvZXNuJ3QgYWN0dWFsbHkKKwlmb3JjZSBhbnkgcHJvZ3Jlc3MgZGlzcGxheSBieSBpdHNlbGYuCisKKy1xOjoKKy0tcXVpZXQ6OgorCVRoaXMgZmxhZyBtYWtlcyB0aGUgY29tbWFuZCBub3QgdG8gcmVwb3J0IGl0cyBwcm9ncmVzcworCW9uIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW0uCisKIFNQRUNJRllJTkcgUkVGRVJFTkNFUwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWF0dHIudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stYXR0ci50eHQKaW5kZXggM2MwNTc4Mi4uODRmNDFhOCAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stYXR0ci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2stYXR0ci50eHQKQEAgLTMyLDcgKzMyLDcgQEAKIAlpbnN0ZWFkIG9mIGZyb20gdGhlIGNvbW1hbmQtbGluZS4KIAogLXo6OgotCVRoZSBvdXRwdXQgZm9ybWF0IGlzIG1vZGlmaWVkIHRvIGJlIG1hY2hpbmUtcGFyc2VhYmxlLgorCVRoZSBvdXRwdXQgZm9ybWF0IGlzIG1vZGlmaWVkIHRvIGJlIG1hY2hpbmUtcGFyc2FibGUuCiAJSWYgYC0tc3RkaW5gIGlzIGFsc28gZ2l2ZW4sIGlucHV0IHBhdGhzIGFyZSBzZXBhcmF0ZWQKIAl3aXRoIGEgTlVMIGNoYXJhY3RlciBpbnN0ZWFkIG9mIGEgbGluZWZlZWQgY2hhcmFjdGVyLgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1pZ25vcmUudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtY2hlY2staWdub3JlLnR4dAppbmRleCA4YjQyY2IzLi44YjJkNDljIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1jaGVjay1pZ25vcmUudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWNoZWNrLWlnbm9yZS50eHQKQEAgLTM5LDcgKzM5LDcgQEAKIAlpbnN0ZWFkIG9mIGZyb20gdGhlIGNvbW1hbmQtbGluZS4KIAogLXo6OgotCVRoZSBvdXRwdXQgZm9ybWF0IGlzIG1vZGlmaWVkIHRvIGJlIG1hY2hpbmUtcGFyc2VhYmxlIChzZWUKKwlUaGUgb3V0cHV0IGZvcm1hdCBpcyBtb2RpZmllZCB0byBiZSBtYWNoaW5lLXBhcnNhYmxlIChzZWUKIAliZWxvdykuICBJZiBgLS1zdGRpbmAgaXMgYWxzbyBnaXZlbiwgaW5wdXQgcGF0aHMgYXJlIHNlcGFyYXRlZAogCXdpdGggYSBOVUwgY2hhcmFjdGVyIGluc3RlYWQgb2YgYSBsaW5lZmVlZCBjaGFyYWN0ZXIuCiAKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWN2c3NlcnZlci50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1jdnNzZXJ2ZXIudHh0CmluZGV4IDc5ZTIyYjEuLjFiMWM3MWEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWN2c3NlcnZlci50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtY3Zzc2VydmVyLnR4dApAQCAtMjk0LDcgKzI5NCw3IEBACiAJR2l0IGRpcmVjdG9yeSBuYW1lCiAlZzo6CiAJR2l0IGRpcmVjdG9yeSBuYW1lLCB3aGVyZSBhbGwgY2hhcmFjdGVycyBleGNlcHQgZm9yCi0JYWxwaGEtbnVtZXJpYyBvbmVzLCBgLmAsIGFuZCBgLWAgYXJlIHJlcGxhY2VkIHdpdGgKKwlhbHBoYW51bWVyaWMgb25lcywgYC5gLCBhbmQgYC1gIGFyZSByZXBsYWNlZCB3aXRoCiAJYF9gICh0aGlzIHNob3VsZCBtYWtlIGl0IGVhc2llciB0byB1c2UgdGhlIGRpcmVjdG9yeQogCW5hbWUgaW4gYSBmaWxlbmFtZSBpZiB3YW50ZWQpCiAlbTo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1kaWZmLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYudHh0CmluZGV4IDcyMTc5ZDkuLjM3NzgxY2YgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWRpZmYudHh0CkBAIC0zNiw3ICszNiw3IEBACiAJcnVubmluZyB0aGUgY29tbWFuZCBpbiBhIHdvcmtpbmcgdHJlZSBjb250cm9sbGVkIGJ5IEdpdCBhbmQKIAlhdCBsZWFzdCBvbmUgb2YgdGhlIHBhdGhzIHBvaW50cyBvdXRzaWRlIHRoZSB3b3JraW5nIHRyZWUsCiAJb3Igd2hlbiBydW5uaW5nIHRoZSBjb21tYW5kIG91dHNpZGUgYSB3b3JraW5nIHRyZWUKLQljb250cm9sbGVkIGJ5IEdpdC4KKwljb250cm9sbGVkIGJ5IEdpdC4gVGhpcyBmb3JtIGltcGxpZXMgYC0tZXhpdC1jb2RlYC4KIAogJ2dpdCBkaWZmJyBbPG9wdGlvbnM+XSAtLWNhY2hlZCBbPGNvbW1pdD5dIFstLV0gWzxwYXRoPi4uLl06OgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWV4cG9ydC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1mYXN0LWV4cG9ydC50eHQKaW5kZXggMzc2MzRiZi4uZTg5NTBkZSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtZmFzdC1leHBvcnQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZhc3QtZXhwb3J0LnR4dApAQCAtMTQyLDcgKzE0Miw3IEBACiAJU3BlY2lmeSBob3cgdG8gaGFuZGxlIGBlbmNvZGluZ2AgaGVhZGVyIGluIGNvbW1pdCBvYmplY3RzLiAgV2hlbgogCWFza2luZyB0byAnYWJvcnQnICh3aGljaCBpcyB0aGUgZGVmYXVsdCksIHRoaXMgcHJvZ3JhbSB3aWxsIGRpZQogCXdoZW4gZW5jb3VudGVyaW5nIHN1Y2ggYSBjb21taXQgb2JqZWN0LiAgV2l0aCAneWVzJywgdGhlIGNvbW1pdAotCW1lc3NhZ2Ugd2lsbCBiZSByZWVuY29kZWQgaW50byBVVEYtOC4gIFdpdGggJ25vJywgdGhlIG9yaWdpbmFsCisJbWVzc2FnZSB3aWxsIGJlIHJlLWVuY29kZWQgaW50byBVVEYtOC4gIFdpdGggJ25vJywgdGhlIG9yaWdpbmFsCiAJZW5jb2Rpbmcgd2lsbCBiZSBwcmVzZXJ2ZWQuCiAKIC0tcmVmc3BlYzo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1maWx0ZXItYnJhbmNoLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LWZpbHRlci1icmFuY2gudHh0CmluZGV4IDU4NzY1OTguLjM2ODZhNjcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZpbHRlci1icmFuY2gudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LWZpbHRlci1icmFuY2gudHh0CkBAIC01MzQsNyArNTM0LDcgQEAKIGh0dHBzOi8vZ2l0aHViLmNvbS9uZXdyZW4vZ2l0LWZpbHRlci1yZXBvL2Jsb2IvbWFzdGVyL2NvbnRyaWIvZmlsdGVyLXJlcG8tZGVtb3MvZmlsdGVyLWxhbWVseVtmaWx0ZXItbGFtZWx5XSwKIGEgZHJvcC1pbiBnaXQtZmlsdGVyLWJyYW5jaCByZXBsYWNlbWVudCAod2l0aCBhIGZldyBjYXZlYXRzKS4gIFdoaWxlCiBmaWx0ZXItbGFtZWx5IHN1ZmZlcnMgZnJvbSBhbGwgdGhlIHNhbWUgc2FmZXR5IGlzc3VlcyBhcwotZ2l0LWZpbHRlci1icmFuY2gsIGl0IGF0IGxlYXN0IGFtZWxvcmlhdGVzIHRoZSBwZXJmb3JtYW5jZSBpc3N1ZXMgYQorZ2l0LWZpbHRlci1icmFuY2gsIGl0IGF0IGxlYXN0IGFtZWxpb3JhdGVzIHRoZSBwZXJmb3JtYW5jZSBpc3N1ZXMgYQogbGl0dGxlLgogCiBbW1NBRkVUWV1dCkBAIC02NDksNyArNjQ5LDcgQEAKIGNvbW1pdHMgZnJvbSBiZWZvcmUgdGhlIGZpbHRlcmluZyBvcGVyYXRpb24gYXJlIGFsc28gcHJ1bmVkIGluc3RlYWQgb2YKIGp1c3QgcHJ1bmluZyBjb21taXRzIHRoYXQgYmVjYW1lIGVtcHR5IGR1ZSB0byBmaWx0ZXJpbmcgcnVsZXMuCiAKLSogSWYgLS1wcnVuZSBlbXB0eSBpcyBzcGVjaWZpZWQsIHNvbWV0aW1lcyBlbXB0eSBjb21taXRzIGFyZSBtaXNzZWQKKyogSWYgLS1wcnVuZS1lbXB0eSBpcyBzcGVjaWZpZWQsIHNvbWV0aW1lcyBlbXB0eSBjb21taXRzIGFyZSBtaXNzZWQKIGFuZCBsZWZ0IGFyb3VuZCBhbnl3YXkgKGEgc29tZXdoYXQgcmFyZSBidWcsIGJ1dCBpdCBoYXBwZW5zLi4uKQogCiAqIEEgbWlub3IgaXNzdWUsIGJ1dCB1c2VycyB3aG8gaGF2ZSBhIGdvYWwgdG8gdXBkYXRlIGFsbCBuYW1lcyBhbmQKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LWZvcm1hdC1wYXRjaC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1mb3JtYXQtcGF0Y2gudHh0CmluZGV4IDIwMzVkNGQuLjAwYmRmOWIgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LWZvcm1hdC1wYXRjaC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtZm9ybWF0LXBhdGNoLnR4dApAQCAtMTksNiArMTksNyBAQAogCQkgICBbLS1zdGFydC1udW1iZXIgPG4+XSBbLS1udW1iZXJlZC1maWxlc10KIAkJICAgWy0taW4tcmVwbHktdG89PG1lc3NhZ2UgaWQ+XSBbLS1zdWZmaXg9LjxzZng+XQogCQkgICBbLS1pZ25vcmUtaWYtaW4tdXBzdHJlYW1dCisJCSAgIFstLWNvdmVyLWZyb20tZGVzY3JpcHRpb249PG1vZGU+XQogCQkgICBbLS1yZmNdIFstLXN1YmplY3QtcHJlZml4PTxzdWJqZWN0IHByZWZpeD5dCiAJCSAgIFsoLS1yZXJvbGwtY291bnR8LXYpIDxuPl0KIAkJICAgWy0tdG89PGVtYWlsPl0gWy0tY2M9PGVtYWlsPl0KQEAgLTE3Miw2ICsxNzMsMjYgQEAKIAlwYXRjaGVzIGJlaW5nIGdlbmVyYXRlZCwgYW5kIGFueSBwYXRjaCB0aGF0IG1hdGNoZXMgaXMKIAlpZ25vcmVkLgogCistLWNvdmVyLWZyb20tZGVzY3JpcHRpb249PG1vZGU+OjoKKwlDb250cm9scyB3aGljaCBwYXJ0cyBvZiB0aGUgY292ZXIgbGV0dGVyIHdpbGwgYmUgYXV0b21hdGljYWxseQorCXBvcHVsYXRlZCB1c2luZyB0aGUgYnJhbmNoJ3MgZGVzY3JpcHRpb24uCisrCitJZiBgPG1vZGU+YCBpcyBgbWVzc2FnZWAgb3IgYGRlZmF1bHRgLCB0aGUgY292ZXIgbGV0dGVyIHN1YmplY3Qgd2lsbCBiZQorcG9wdWxhdGVkIHdpdGggcGxhY2Vob2xkZXIgdGV4dC4gVGhlIGJvZHkgb2YgdGhlIGNvdmVyIGxldHRlciB3aWxsIGJlCitwb3B1bGF0ZWQgd2l0aCB0aGUgYnJhbmNoJ3MgZGVzY3JpcHRpb24uIFRoaXMgaXMgdGhlIGRlZmF1bHQgbW9kZSB3aGVuCitubyBjb25maWd1cmF0aW9uIG5vciBjb21tYW5kIGxpbmUgb3B0aW9uIGlzIHNwZWNpZmllZC4KKysKK0lmIGA8bW9kZT5gIGlzIGBzdWJqZWN0YCwgdGhlIGZpcnN0IHBhcmFncmFwaCBvZiB0aGUgYnJhbmNoIGRlc2NyaXB0aW9uIHdpbGwKK3BvcHVsYXRlIHRoZSBjb3ZlciBsZXR0ZXIgc3ViamVjdC4gVGhlIHJlbWFpbmRlciBvZiB0aGUgZGVzY3JpcHRpb24gd2lsbAorcG9wdWxhdGUgdGhlIGJvZHkgb2YgdGhlIGNvdmVyIGxldHRlci4KKysKK0lmIGA8bW9kZT5gIGlzIGBhdXRvYCwgaWYgdGhlIGZpcnN0IHBhcmFncmFwaCBvZiB0aGUgYnJhbmNoIGRlc2NyaXB0aW9uCitpcyBncmVhdGVyIHRoYW4gMTAwIGJ5dGVzLCB0aGVuIHRoZSBtb2RlIHdpbGwgYmUgYG1lc3NhZ2VgLCBvdGhlcndpc2UKK2BzdWJqZWN0YCB3aWxsIGJlIHVzZWQuCisrCitJZiBgPG1vZGU+YCBpcyBgbm9uZWAsIGJvdGggdGhlIGNvdmVyIGxldHRlciBzdWJqZWN0IGFuZCBib2R5IHdpbGwgYmUKK3BvcHVsYXRlZCB3aXRoIHBsYWNlaG9sZGVyIHRleHQuCisKIC0tc3ViamVjdC1wcmVmaXg9PHN1YmplY3QgcHJlZml4Pjo6CiAJSW5zdGVhZCBvZiB0aGUgc3RhbmRhcmQgJ1tQQVRDSF0nIHByZWZpeCBpbiB0aGUgc3ViamVjdAogCWxpbmUsIGluc3RlYWQgdXNlICdbPHN1YmplY3QgcHJlZml4Pl0nLiBUaGlzCkBAIC0zNDgsNiArMzY5LDcgQEAKIAlzaWduT2ZmID0gdHJ1ZQogCW91dHB1dERpcmVjdG9yeSA9IDxkaXJlY3Rvcnk+CiAJY292ZXJMZXR0ZXIgPSBhdXRvCisJY292ZXJGcm9tRGVzY3JpcHRpb24gPSBhdXRvCiAtLS0tLS0tLS0tLS0KIAogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1tdWx0aS1wYWNrLWluZGV4LnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LW11bHRpLXBhY2staW5kZXgudHh0CmluZGV4IDIzM2IyYjcuLjY0MmQ5YWMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LW11bHRpLXBhY2staW5kZXgudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW11bHRpLXBhY2staW5kZXgudHh0CkBAIC05LDcgKzksNyBAQAogU1lOT1BTSVMKIC0tLS0tLS0tCiBbdmVyc2VdCi0nZ2l0IG11bHRpLXBhY2staW5kZXgnIFstLW9iamVjdC1kaXI9PGRpcj5dIDxzdWJjb21tYW5kPgorJ2dpdCBtdWx0aS1wYWNrLWluZGV4JyBbLS1vYmplY3QtZGlyPTxkaXI+XSBbLS1bbm8tXXByb2dyZXNzXSA8c3ViY29tbWFuZD4KIAogREVTQ1JJUFRJT04KIC0tLS0tLS0tLS0tCkBAIC0yMyw2ICsyMywxMCBAQAogCWA8ZGlyPi9wYWNrcy9tdWx0aS1wYWNrLWluZGV4YCBmb3IgdGhlIGN1cnJlbnQgTUlEWCBmaWxlLCBhbmQKIAlgPGRpcj4vcGFja3NgIGZvciB0aGUgcGFjay1maWxlcyB0byBpbmRleC4KIAorLS1bbm8tXXByb2dyZXNzOjoKKwlUdXJuIHByb2dyZXNzIG9uL29mZiBleHBsaWNpdGx5LiBJZiBuZWl0aGVyIGlzIHNwZWNpZmllZCwgcHJvZ3Jlc3MgaXMKKwlzaG93biBpZiBzdGFuZGFyZCBlcnJvciBpcyBjb25uZWN0ZWQgdG8gYSB0ZXJtaW5hbC4KKwogVGhlIGZvbGxvd2luZyBzdWJjb21tYW5kcyBhcmUgYXZhaWxhYmxlOgogCiB3cml0ZTo6CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1ub3Rlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1ub3Rlcy50eHQKaW5kZXggZjU2YTVhOS4uY2VkMmU4MiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtbm90ZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LW5vdGVzLnR4dApAQCAtMTAsNyArMTAsNyBAQAogW3ZlcnNlXQogJ2dpdCBub3RlcycgW2xpc3QgWzxvYmplY3Q+XV0KICdnaXQgbm90ZXMnIGFkZCBbLWZdIFstLWFsbG93LWVtcHR5XSBbLUYgPGZpbGU+IHwgLW0gPG1zZz4gfCAoLWMgfCAtQykgPG9iamVjdD5dIFs8b2JqZWN0Pl0KLSdnaXQgbm90ZXMnIGNvcHkgWy1mXSAoIC0tc3RkaW4gfCA8ZnJvbS1vYmplY3Q+IDx0by1vYmplY3Q+ICkKKydnaXQgbm90ZXMnIGNvcHkgWy1mXSAoIC0tc3RkaW4gfCA8ZnJvbS1vYmplY3Q+IFs8dG8tb2JqZWN0Pl0gKQogJ2dpdCBub3RlcycgYXBwZW5kIFstLWFsbG93LWVtcHR5XSBbLUYgPGZpbGU+IHwgLW0gPG1zZz4gfCAoLWMgfCAtQykgPG9iamVjdD5dIFs8b2JqZWN0Pl0KICdnaXQgbm90ZXMnIGVkaXQgWy0tYWxsb3ctZW1wdHldIFs8b2JqZWN0Pl0KICdnaXQgbm90ZXMnIHNob3cgWzxvYmplY3Q+XQpAQCAtNjgsOCArNjgsOCBAQAogCXN1YmNvbW1hbmQpLgogCiBjb3B5OjoKLQlDb3B5IHRoZSBub3RlcyBmb3IgdGhlIGZpcnN0IG9iamVjdCBvbnRvIHRoZSBzZWNvbmQgb2JqZWN0LgotCUFib3J0IGlmIHRoZSBzZWNvbmQgb2JqZWN0IGFscmVhZHkgaGFzIG5vdGVzLCBvciBpZiB0aGUgZmlyc3QKKwlDb3B5IHRoZSBub3RlcyBmb3IgdGhlIGZpcnN0IG9iamVjdCBvbnRvIHRoZSBzZWNvbmQgb2JqZWN0IChkZWZhdWx0cyB0bworCUhFQUQpLiBBYm9ydCBpZiB0aGUgc2Vjb25kIG9iamVjdCBhbHJlYWR5IGhhcyBub3Rlcywgb3IgaWYgdGhlIGZpcnN0CiAJb2JqZWN0IGhhcyBub25lICh1c2UgLWYgdG8gb3ZlcndyaXRlIGV4aXN0aW5nIG5vdGVzIHRvIHRoZQogCXNlY29uZCBvYmplY3QpLiBUaGlzIHN1YmNvbW1hbmQgaXMgZXF1aXZhbGVudCB0bzoKIAlgZ2l0IG5vdGVzIGFkZCBbLWZdIC1DICQoZ2l0IG5vdGVzIGxpc3QgPGZyb20tb2JqZWN0PikgPHRvLW9iamVjdD5gCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yYW5nZS1kaWZmLnR4dCBiL0RvY3VtZW50YXRpb24vZ2l0LXJhbmdlLWRpZmYudHh0CmluZGV4IDhhNmVhMmMuLjAwNmZlYjcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJhbmdlLWRpZmYudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJhbmdlLWRpZmYudHh0CkBAIC0yNDIsNyArMjQyLDcgQEAKIAogVGhlIG92ZXJhbGwgdGltZSBuZWVkZWQgdG8gY29tcHV0ZSB0aGlzIGFsZ29yaXRobSBpcyB0aGUgdGltZSBuZWVkZWQgdG8KIGNvbXB1dGUgbittIGNvbW1pdCBkaWZmcyBhbmQgdGhlbiBuKm0gZGlmZnMgb2YgcGF0Y2hlcywgcGx1cyB0aGUgdGltZQotbmVlZGVkIHRvIGNvbXB1dGUgdGhlIGxlYXN0LWNvc3QgYXNzaWdtZW50IGJldHdlZW4gbiBhbmQgbSBkaWZmcy4gR2l0CituZWVkZWQgdG8gY29tcHV0ZSB0aGUgbGVhc3QtY29zdCBhc3NpZ25tZW50IGJldHdlZW4gbiBhbmQgbSBkaWZmcy4gR2l0CiB1c2VzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBKb25rZXItVm9sZ2VuYW50IGFsZ29yaXRobSB0byBzb2x2ZSB0aGUKIGFzc2lnbm1lbnQgcHJvYmxlbSwgd2hpY2ggaGFzIGN1YmljIHJ1bnRpbWUgY29tcGxleGl0eS4gVGhlIG1hdGNoaW5nCiBmb3VuZCBpbiB0aGlzIGNhc2Ugd2lsbCBsb29rIGxpa2UgdGhpczoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXJlYmFzZS50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1yZWJhc2UudHh0CmluZGV4IDYzOWE0MTcuLjBjNGYwMzggMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXJlYmFzZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtcmViYXNlLnR4dApAQCAtNDQzLDggKzQ0Myw4IEBACiBvbnRvIGA8dXBzdHJlYW0+YCAob3IgYDxvbnRvPmAsIGlmIHNwZWNpZmllZCkuCiArCiBUaGUgYC0tcmViYXNlLW1lcmdlc2AgbW9kZSBpcyBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgZGVwcmVjYXRlZAotYC0tcHJlc2VydmUtbWVyZ2VzYCwgYnV0IGluIGNvbnRyYXN0IHRvIHRoYXQgb3B0aW9uIHdvcmtzIHdlbGwgaW4gaW50ZXJhY3RpdmUKLXJlYmFzZXM6IGNvbW1pdHMgY2FuIGJlIHJlb3JkZXJlZCwgaW5zZXJ0ZWQgYW5kIGRyb3BwZWQgYXQgd2lsbC4KK2AtLXByZXNlcnZlLW1lcmdlc2AgYnV0IHdvcmtzIHdpdGggaW50ZXJhY3RpdmUgcmViYXNlcywKK3doZXJlIGNvbW1pdHMgY2FuIGJlIHJlb3JkZXJlZCwgaW5zZXJ0ZWQgYW5kIGRyb3BwZWQgYXQgd2lsbC4KICsKIEl0IGlzIGN1cnJlbnRseSBvbmx5IHBvc3NpYmxlIHRvIHJlY3JlYXRlIHRoZSBtZXJnZSBjb21taXRzIHVzaW5nIHRoZQogYHJlY3Vyc2l2ZWAgbWVyZ2Ugc3RyYXRlZ3k7IERpZmZlcmVudCBtZXJnZSBzdHJhdGVnaWVzIGNhbiBiZSB1c2VkIG9ubHkgdmlhCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1yZXYtcGFyc2UudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtcmV2LXBhcnNlLnR4dAppbmRleCBlNzJkMzMyLi45OTg1NDc3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC1yZXYtcGFyc2UudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXJldi1wYXJzZS50eHQKQEAgLTI3NCw2ICsyNzQsMTMgQEAKIAlTaG93IHRoZSBwYXRoIHRvIHRoZSBzaGFyZWQgaW5kZXggZmlsZSBpbiBzcGxpdCBpbmRleCBtb2RlLCBvcgogCWVtcHR5IGlmIG5vdCBpbiBzcGxpdC1pbmRleCBtb2RlLgogCistLXNob3ctb2JqZWN0LWZvcm1hdFs9KHN0b3JhZ2V8aW5wdXR8b3V0cHV0KV06OgorCVNob3cgdGhlIG9iamVjdCBmb3JtYXQgKGhhc2ggYWxnb3JpdGhtKSB1c2VkIGZvciB0aGUgcmVwb3NpdG9yeQorCWZvciBzdG9yYWdlIGluc2lkZSB0aGUgYC5naXRgIGRpcmVjdG9yeSwgaW5wdXQsIG9yIG91dHB1dC4gRm9yCisJaW5wdXQsIG11bHRpcGxlIGFsZ29yaXRobXMgbWF5IGJlIHByaW50ZWQsIHNwYWNlLXNlcGFyYXRlZC4KKwlJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZGVmYXVsdCBpcyAic3RvcmFnZSIuCisKKwogT3RoZXIgT3B0aW9ucwogfn5+fn5+fn5+fn5+fgogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC1zaG9ydGxvZy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC1zaG9ydGxvZy50eHQKaW5kZXggYmM4MDkwNS4uYTcyZWE3ZiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQtc2hvcnRsb2cudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXNob3J0bG9nLnR4dApAQCAtNzYsNiArNzYsOSBAQAogUGF0aHMgbWF5IG5lZWQgdG8gYmUgcHJlZml4ZWQgd2l0aCBgLS1gIHRvIHNlcGFyYXRlIHRoZW0gZnJvbQogb3B0aW9ucyBvciB0aGUgcmV2aXNpb24gcmFuZ2UsIHdoZW4gY29uZnVzaW9uIGFyaXNlcy4KIAorOmdpdC1zaG9ydGxvZzogMQoraW5jbHVkZTo6cmV2LWxpc3Qtb3B0aW9ucy50eHRbXQorCiBNQVBQSU5HIEFVVEhPUlMKIC0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0IGIvRG9jdW1lbnRhdGlvbi9naXQtdGFnLnR4dAppbmRleCAyZTU1OTlhLi5mNmQ5NzkxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdC10YWcudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LXRhZy50eHQKQEAgLTY1LDcgKzY1LDcgQEAKIC0tc2lnbjo6CiAJTWFrZSBhIEdQRy1zaWduZWQgdGFnLCB1c2luZyB0aGUgZGVmYXVsdCBlLW1haWwgYWRkcmVzcydzIGtleS4KIAlUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0YWcgR1BHLXNpZ25pbmcgaXMgY29udHJvbGxlZCBieSBgdGFnLmdwZ1NpZ25gCi0JY29uZmlndXJhdGlvbiB2YXJpYWJsZSBpZiBpdCBleGlzdHMsIG9yIGRpc2FibGVkIG9kZXIgb3RoZXJ3aXNlLgorCWNvbmZpZ3VyYXRpb24gdmFyaWFibGUgaWYgaXQgZXhpc3RzLCBvciBkaXNhYmxlZCBvdGhlcndpc2UuCiAJU2VlIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXS4KIAogLS1uby1zaWduOjoKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1pbmRleC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC11cGRhdGUtaW5kZXgudHh0CmluZGV4IDFjNGQxNDYuLmM3YTYyNzEgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0LXVwZGF0ZS1pbmRleC50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXQtdXBkYXRlLWluZGV4LnR4dApAQCAtMTYsNiArMTYsNyBAQAogCSAgICAgWy0tY2htb2Q9KCt8LSl4XQogCSAgICAgWy0tW25vLV1hc3N1bWUtdW5jaGFuZ2VkXQogCSAgICAgWy0tW25vLV1za2lwLXdvcmt0cmVlXQorCSAgICAgWy0tW25vLV1pZ25vcmUtc2tpcC13b3JrdHJlZS1lbnRyaWVzXQogCSAgICAgWy0tW25vLV1mc21vbml0b3ItdmFsaWRdCiAJICAgICBbLS1pZ25vcmUtc3VibW9kdWxlc10KIAkgICAgIFstLVtuby1dc3BsaXQtaW5kZXhdCkBAIC0xMTMsNiArMTE0LDExIEBACiAJc2V0IGFuZCB1bnNldCB0aGUgInNraXAtd29ya3RyZWUiIGJpdCBmb3IgdGhlIHBhdGhzLiBTZWUKIAlzZWN0aW9uICJTa2lwLXdvcmt0cmVlIGJpdCIgYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKworLS1bbm8tXWlnbm9yZS1za2lwLXdvcmt0cmVlLWVudHJpZXM6OgorCURvIG5vdCByZW1vdmUgc2tpcC13b3JrdHJlZSAoQUtBICJpbmRleC1vbmx5IikgZW50cmllcyBldmVuIHdoZW4KKwl0aGUgYC0tcmVtb3ZlYCBvcHRpb24gd2FzIHNwZWNpZmllZC4KKwogLS1bbm8tXWZzbW9uaXRvci12YWxpZDo6CiAJV2hlbiBvbmUgb2YgdGhlc2UgZmxhZ3MgaXMgc3BlY2lmaWVkLCB0aGUgb2JqZWN0IG5hbWUgcmVjb3JkZWQKIAlmb3IgdGhlIHBhdGhzIGFyZSBub3QgdXBkYXRlZC4gSW5zdGVhZCwgdGhlc2Ugb3B0aW9ucwpAQCAtNDI2LDcgKzQzMiw3IEBACiBsaW5rZ2l0OmdpdC1jb25maWdbMV0pLgogCiBUbyBhdm9pZCBkZWxldGluZyBhIHNoYXJlZCBpbmRleCBmaWxlIHRoYXQgaXMgc3RpbGwgdXNlZCwgaXRzCi1tb2RpZmljYXRpb24gdGltZSBpcyB1cGRhdGVkIHRvIHRoZSBjdXJyZW50IHRpbWUgZXZlcnl0aW1lIGEgbmV3IHNwbGl0Cittb2RpZmljYXRpb24gdGltZSBpcyB1cGRhdGVkIHRvIHRoZSBjdXJyZW50IHRpbWUgZXZlcnkgdGltZSBhIG5ldyBzcGxpdAogaW5kZXggYmFzZWQgb24gdGhlIHNoYXJlZCBpbmRleCBmaWxlIGlzIGVpdGhlciBjcmVhdGVkIG9yIHJlYWQgZnJvbS4KIAogVU5UUkFDS0VEIENBQ0hFCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdC50eHQKaW5kZXggOWI4MjU2NC4uMWI2NzhlMiAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi9naXQudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0LnR4dApAQCAtMjcxLDggKzI3MSw4IEBACiB0aGUgd29ya2luZyB0cmVlLgogCiAKLVN5bmNoaW5nIHJlcG9zaXRvcmllcwotfn5+fn5+fn5+fn5+fn5+fn5+fn5+CitTeW5jaW5nIHJlcG9zaXRvcmllcworfn5+fn5+fn5+fn5+fn5+fn5+fn4KIAogaW5jbHVkZTo6Y21kcy1zeW5jaGluZ3JlcG9zaXRvcmllcy50eHRbXQogCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2dpdGF0dHJpYnV0ZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9naXRhdHRyaWJ1dGVzLnR4dAppbmRleCBjNWE1MjhjLi41MDhmZTcxIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdGF0dHJpYnV0ZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vZ2l0YXR0cmlidXRlcy50eHQKQEAgLTI5MywxMCArMjkzLDEwIEBACiAKIEluIHRoZXNlIGNhc2VzIHlvdSBjYW4gdGVsbCBHaXQgdGhlIGVuY29kaW5nIG9mIGEgZmlsZSBpbiB0aGUgd29ya2luZwogZGlyZWN0b3J5IHdpdGggdGhlIGB3b3JraW5nLXRyZWUtZW5jb2RpbmdgIGF0dHJpYnV0ZS4gSWYgYSBmaWxlIHdpdGggdGhpcwotYXR0cmlidXRlIGlzIGFkZGVkIHRvIEdpdCwgdGhlbiBHaXQgcmVlbmNvZGVzIHRoZSBjb250ZW50IGZyb20gdGhlCithdHRyaWJ1dGUgaXMgYWRkZWQgdG8gR2l0LCB0aGVuIEdpdCByZS1lbmNvZGVzIHRoZSBjb250ZW50IGZyb20gdGhlCiBzcGVjaWZpZWQgZW5jb2RpbmcgdG8gVVRGLTguIEZpbmFsbHksIEdpdCBzdG9yZXMgdGhlIFVURi04IGVuY29kZWQKIGNvbnRlbnQgaW4gaXRzIGludGVybmFsIGRhdGEgc3RydWN0dXJlIChjYWxsZWQgInRoZSBpbmRleCIpLiBPbiBjaGVja291dAotdGhlIGNvbnRlbnQgaXMgcmVlbmNvZGVkIGJhY2sgdG8gdGhlIHNwZWNpZmllZCBlbmNvZGluZy4KK3RoZSBjb250ZW50IGlzIHJlLWVuY29kZWQgYmFjayB0byB0aGUgc3BlY2lmaWVkIGVuY29kaW5nLgogCiBQbGVhc2Ugbm90ZSB0aGF0IHVzaW5nIHRoZSBgd29ya2luZy10cmVlLWVuY29kaW5nYCBhdHRyaWJ1dGUgbWF5IGhhdmUgYQogbnVtYmVyIG9mIHBpdGZhbGxzOgpAQCAtNDk4LDcgKzQ5OCw3IEBACiBXaGVuIEdpdCBlbmNvdW50ZXJzIHRoZSBmaXJzdCBmaWxlIHRoYXQgbmVlZHMgdG8gYmUgY2xlYW5lZCBvciBzbXVkZ2VkLAogaXQgc3RhcnRzIHRoZSBmaWx0ZXIgYW5kIHBlcmZvcm1zIHRoZSBoYW5kc2hha2UuIEluIHRoZSBoYW5kc2hha2UsIHRoZQogd2VsY29tZSBtZXNzYWdlIHNlbnQgYnkgR2l0IGlzICJnaXQtZmlsdGVyLWNsaWVudCIsIG9ubHkgdmVyc2lvbiAyIGlzCi1zdXBwcG9ydGVkLCBhbmQgdGhlIHN1cHBvcnRlZCBjYXBhYmlsaXRpZXMgYXJlICJjbGVhbiIsICJzbXVkZ2UiLCBhbmQKK3N1cHBvcnRlZCwgYW5kIHRoZSBzdXBwb3J0ZWQgY2FwYWJpbGl0aWVzIGFyZSAiY2xlYW4iLCAic211ZGdlIiwgYW5kCiAiZGVsYXkiLgogCiBBZnRlcndhcmRzIEdpdCBzZW5kcyBhIGxpc3Qgb2YgImtleT12YWx1ZSIgcGFpcnMgdGVybWluYXRlZCB3aXRoCkBAIC04MTIsNiArODEyLDggQEAKIAogLSBgZHRzYCBzdWl0YWJsZSBmb3IgZGV2aWNldHJlZSAoRFRTKSBmaWxlcy4KIAorLSBgZWxpeGlyYCBzdWl0YWJsZSBmb3Igc291cmNlIGNvZGUgaW4gdGhlIEVsaXhpciBsYW5ndWFnZS4KKwogLSBgZm9ydHJhbmAgc3VpdGFibGUgZm9yIHNvdXJjZSBjb2RlIGluIHRoZSBGb3J0cmFuIGxhbmd1YWdlLgogCiAtIGBmb3VudGFpbmAgc3VpdGFibGUgZm9yIEZvdW50YWluIGRvY3VtZW50cy4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0bW9kdWxlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdG1vZHVsZXMudHh0CmluZGV4IGYyYTY1YmEuLjk1M2MzODcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0bW9kdWxlcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXRtb2R1bGVzLnR4dApAQCAtODEsNyArODEsNyBAQAogCSAgICBDb21taXR0ZWQgZGlmZmVyZW5jZXMgYW5kIG1vZGlmaWNhdGlvbnMgdG8gdHJhY2tlZCBmaWxlcyB3aWxsIHNob3cKIAkgICAgdXAuCiAKLQlub25lOzsgTm8gbW9kaWZpYXRpb25zIHRvIHN1Ym1vZHVsZXMgYXJlIGlnbm9yZWQsIGFsbCBvZiBjb21taXR0ZWQKKwlub25lOzsgTm8gbW9kaWZpY2F0aW9ucyB0byBzdWJtb2R1bGVzIGFyZSBpZ25vcmVkLCBhbGwgb2YgY29tbWl0dGVkCiAJICAgIGRpZmZlcmVuY2VzLCBhbmQgbW9kaWZpY2F0aW9ucyB0byB0cmFja2VkIGFuZCB1bnRyYWNrZWQgZmlsZXMgYXJlCiAJICAgIHNob3duLiBUaGlzIGlzIHRoZSBkZWZhdWx0IG9wdGlvbi4KIApkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9naXRyZXBvc2l0b3J5LWxheW91dC50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHJlcG9zaXRvcnktbGF5b3V0LnR4dAppbmRleCBkNjM4OGYxLi4xYTJlZjRjIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2dpdHJlcG9zaXRvcnktbGF5b3V0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL2dpdHJlcG9zaXRvcnktbGF5b3V0LnR4dApAQCAtOTYsOSArOTYsOSBAQAogCWRpcmVjdG9yeS4gIFRoZSAnZ2l0IHBydW5lJyBjb21tYW5kIGtub3dzIHRvIHByZXNlcnZlCiAJb2JqZWN0cyByZWFjaGFibGUgZnJvbSByZWZzIGZvdW5kIGluIHRoaXMgZGlyZWN0b3J5IGFuZAogCWl0cyBzdWJkaXJlY3Rvcmllcy4KLQlUaGlzIGRpcmVjdG9yeSBpcyBpZ25vcmVkIChleGNlcHQgcmVmcy9iaXNlY3QgYW5kCi0JcmVmcy93b3JrdHJlZSkgaWYgJEdJVF9DT01NT05fRElSIGlzIHNldCBhbmQKLQkiJEdJVF9DT01NT05fRElSL3JlZnMiIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgorCVRoaXMgZGlyZWN0b3J5IGlzIGlnbm9yZWQgKGV4Y2VwdCByZWZzL2Jpc2VjdCwKKwlyZWZzL3Jld3JpdHRlbiBhbmQgcmVmcy93b3JrdHJlZSkgaWYgJEdJVF9DT01NT05fRElSIGlzCisJc2V0IGFuZCAiJEdJVF9DT01NT05fRElSL3JlZnMiIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgogCiByZWZzL2hlYWRzL2BuYW1lYDo6CiAJcmVjb3JkcyB0aXAtb2YtdGhlLXRyZWUgY29tbWl0IG9iamVjdHMgb2YgYnJhbmNoIGBuYW1lYApAQCAtMjQwLDggKzI0MCw4IEBACiBsb2dzOjoKIAlSZWNvcmRzIG9mIGNoYW5nZXMgbWFkZSB0byByZWZzIGFyZSBzdG9yZWQgaW4gdGhpcyBkaXJlY3RvcnkuCiAJU2VlIGxpbmtnaXQ6Z2l0LXVwZGF0ZS1yZWZbMV0gZm9yIG1vcmUgaW5mb3JtYXRpb24uIFRoaXMKLQlkaXJlY3RvcnkgaXMgaWdub3JlZCBpZiAkR0lUX0NPTU1PTl9ESVIgaXMgc2V0IGFuZAotCSIkR0lUX0NPTU1PTl9ESVIvbG9ncyIgd2lsbCBiZSB1c2VkIGluc3RlYWQuCisJZGlyZWN0b3J5IGlzIGlnbm9yZWQgKGV4Y2VwdCBsb2dzL0hFQUQpIGlmICRHSVRfQ09NTU9OX0RJUiBpcworCXNldCBhbmQgIiRHSVRfQ09NTU9OX0RJUi9sb2dzIiB3aWxsIGJlIHVzZWQgaW5zdGVhZC4KIAogbG9ncy9yZWZzL2hlYWRzL2BuYW1lYDo6CiAJUmVjb3JkcyBhbGwgY2hhbmdlcyBtYWRlIHRvIHRoZSBicmFuY2ggdGlwIG5hbWVkIGBuYW1lYC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZ2l0c3VibW9kdWxlcy50eHQgYi9Eb2N1bWVudGF0aW9uL2dpdHN1Ym1vZHVsZXMudHh0CmluZGV4IDBhODkwMjAuLmM0NzZmODkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vZ2l0c3VibW9kdWxlcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9naXRzdWJtb2R1bGVzLnR4dApAQCAtMyw3ICszLDcgQEAKIAogTkFNRQogLS0tLQotZ2l0c3VibW9kdWxlcyAtIG1vdW50aW5nIG9uZSByZXBvc2l0b3J5IGluc2lkZSBhbm90aGVyCitnaXRzdWJtb2R1bGVzIC0gTW91bnRpbmcgb25lIHJlcG9zaXRvcnkgaW5zaWRlIGFub3RoZXIKIAogU1lOT1BTSVMKIC0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3NlcGFyYXRpbmctdG9waWMtYnJhbmNoZXMudHh0IGIvRG9jdW1lbnRhdGlvbi9ob3d0by9zZXBhcmF0aW5nLXRvcGljLWJyYW5jaGVzLnR4dAppbmRleCBiZDEwMjc0Li44MWJlMGQ2IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL2hvd3RvL3NlcGFyYXRpbmctdG9waWMtYnJhbmNoZXMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vaG93dG8vc2VwYXJhdGluZy10b3BpYy1icmFuY2hlcy50eHQKQEAgLTgxLDcgKzgxLDcgQEAKICAgICAgICAgICAgICAgby0tLW8tLS1vLS0tby0tLW8tLS1vCiAKIFRoZSBsYXN0IGRpZmYgYmV0dGVyIG5vdCB0byBzaG93IGFueXRoaW5nIG90aGVyIHRoYW4gY2xlYW51cHMKLWZvciBjcnVmdHMuICBUaGVuIEkgY2FuIGZpbmFsbHkgY2xlYW4gdGhpbmdzIHVwOgorZm9yIGNydWZ0LiAgVGhlbiBJIGNhbiBmaW5hbGx5IGNsZWFuIHRoaW5ncyB1cDoKIAogICAgICAgICAkIGdpdCBicmFuY2ggLUQgdG9waWMKICAgICAgICAgJCBnaXQgcmVzZXQgLS1oYXJkIEhFQUReIDsjIG51a2UgcHJldGVuZCBtZXJnZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9tYW5wYWdlLWJvbGQtbGl0ZXJhbC54c2wgYi9Eb2N1bWVudGF0aW9uL21hbnBhZ2UtYm9sZC1saXRlcmFsLnhzbAppbmRleCA2MDhlYjVkLi45NGQ2YzFiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21hbnBhZ2UtYm9sZC1saXRlcmFsLnhzbAorKysgYi9Eb2N1bWVudGF0aW9uL21hbnBhZ2UtYm9sZC1saXRlcmFsLnhzbApAQCAtMSwxMiArMSwxMyBAQAogPCEtLSBtYW5wYWdlLWJvbGQtbGl0ZXJhbC54c2w6CiAgICAgIHNwZWNpYWwgZm9ybWF0dGluZyBmb3IgbWFucGFnZXMgcmVuZGVyZWQgZnJvbSBhc2NpaWRvYytkb2Nib29rIC0tPgogPHhzbDpzdHlsZXNoZWV0IHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIgorCQl4bWxuczpkPSJodHRwOi8vZG9jYm9vay5vcmcvbnMvZG9jYm9vayIKIAkJdmVyc2lvbj0iMS4wIj4KIAogPCEtLSByZW5kZXIgbGl0ZXJhbCB0ZXh0IGFzIGJvbGQgKGluc3RlYWQgb2YgcGxhaW4gb3IgbW9ub3NwYWNlKTsKICAgICAgdGhpcyBtYWtlcyBsaXRlcmFsIHRleHQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIGluIG1hbnBhZ2VzCiAgICAgIHZpZXdlZCBvbiBhIHR0eSAtLT4KLTx4c2w6dGVtcGxhdGUgbWF0Y2g9ImxpdGVyYWwiPgorPHhzbDp0ZW1wbGF0ZSBtYXRjaD0ibGl0ZXJhbHxkOmxpdGVyYWwiPgogCTx4c2w6dmFsdWUtb2Ygc2VsZWN0PSIkZ2l0LmRvY2Jvb2suYmFja3NsYXNoIi8+CiAJPHhzbDp0ZXh0PmZCPC94c2w6dGV4dD4KIAk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL21lcmdlLW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9tZXJnZS1vcHRpb25zLnR4dAppbmRleCA1OWI4ZmYxLi40MGRjNGY1IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL21lcmdlLW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vbWVyZ2Utb3B0aW9ucy50eHQKQEAgLTM0LDcgKzM0LDcgQEAKIAogLS1jbGVhbnVwPTxtb2RlPjo6CiAJVGhpcyBvcHRpb24gZGV0ZXJtaW5lcyBob3cgdGhlIG1lcmdlIG1lc3NhZ2Ugd2lsbCBiZSBjbGVhbmVkIHVwIGJlZm9yZQotCWNvbW1pdGluZy4gU2VlIGxpbmtnaXQ6Z2l0LWNvbW1pdFsxXSBmb3IgbW9yZSBkZXRhaWxzLiBJbiBhZGRpdGlvbiwgaWYKKwljb21taXR0aW5nLiBTZWUgbGlua2dpdDpnaXQtY29tbWl0WzFdIGZvciBtb3JlIGRldGFpbHMuIEluIGFkZGl0aW9uLCBpZgogCXRoZSAnPG1vZGU+JyBpcyBnaXZlbiBhIHZhbHVlIG9mIGBzY2lzc29yc2AsIHNjaXNzb3JzIHdpbGwgYmUgYXBwZW5kZWQKIAl0byBgTUVSR0VfTVNHYCBiZWZvcmUgYmVpbmcgcGFzc2VkIG9uIHRvIHRoZSBjb21taXQgbWFjaGluZXJ5IGluIHRoZQogCWNhc2Ugb2YgYSBtZXJnZSBjb25mbGljdC4KZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vbWVyZ2Utc3RyYXRlZ2llcy50eHQgYi9Eb2N1bWVudGF0aW9uL21lcmdlLXN0cmF0ZWdpZXMudHh0CmluZGV4IGFhNjZjYmUuLjI5MTJkZTcgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vbWVyZ2Utc3RyYXRlZ2llcy50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi9tZXJnZS1zdHJhdGVnaWVzLnR4dApAQCAtMzIsNyArMzIsNyBAQAogb3Vyczs7CiAJVGhpcyBvcHRpb24gZm9yY2VzIGNvbmZsaWN0aW5nIGh1bmtzIHRvIGJlIGF1dG8tcmVzb2x2ZWQgY2xlYW5seSBieQogCWZhdm9yaW5nICdvdXInIHZlcnNpb24uICBDaGFuZ2VzIGZyb20gdGhlIG90aGVyIHRyZWUgdGhhdCBkbyBub3QKLQljb25mbGljdCB3aXRoIG91ciBzaWRlIGFyZSByZWZsZWN0ZWQgdG8gdGhlIG1lcmdlIHJlc3VsdC4KKwljb25mbGljdCB3aXRoIG91ciBzaWRlIGFyZSByZWZsZWN0ZWQgaW4gdGhlIG1lcmdlIHJlc3VsdC4KIAlGb3IgYSBiaW5hcnkgZmlsZSwgdGhlIGVudGlyZSBjb250ZW50cyBhcmUgdGFrZW4gZnJvbSBvdXIgc2lkZS4KICsKIFRoaXMgc2hvdWxkIG5vdCBiZSBjb25mdXNlZCB3aXRoIHRoZSAnb3VycycgbWVyZ2Ugc3RyYXRlZ3ksIHdoaWNoIGRvZXMgbm90CmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3ByZXR0eS1mb3JtYXRzLnR4dCBiL0RvY3VtZW50YXRpb24vcHJldHR5LWZvcm1hdHMudHh0CmluZGV4IGI4N2UyZTguLjMxYzZlOGQgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vcHJldHR5LWZvcm1hdHMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcHJldHR5LWZvcm1hdHMudHh0CkBAIC0xNjMsNiArMTYzLDkgQEAKICclYWUnOjogYXV0aG9yIGVtYWlsCiAnJWFFJzo6IGF1dGhvciBlbWFpbCAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlIGxpbmtnaXQ6Z2l0LXNob3J0bG9nWzFdCiAJb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCisnJWFsJzo6IGF1dGhvciBlbWFpbCBsb2NhbC1wYXJ0ICh0aGUgcGFydCBiZWZvcmUgdGhlICdAJyBzaWduKQorJyVhTCc6OiBhdXRob3IgbG9jYWwtcGFydCAoc2VlICclYWwnKSByZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUKKwlsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKICclYWQnOjogYXV0aG9yIGRhdGUgKGZvcm1hdCByZXNwZWN0cyAtLWRhdGU9IG9wdGlvbikKICclYUQnOjogYXV0aG9yIGRhdGUsIFJGQzI4MjIgc3R5bGUKICclYXInOjogYXV0aG9yIGRhdGUsIHJlbGF0aXZlCkBAIC0xNzUsNiArMTc4LDkgQEAKICclY2UnOjogY29tbWl0dGVyIGVtYWlsCiAnJWNFJzo6IGNvbW1pdHRlciBlbWFpbCAocmVzcGVjdGluZyAubWFpbG1hcCwgc2VlCiAJbGlua2dpdDpnaXQtc2hvcnRsb2dbMV0gb3IgbGlua2dpdDpnaXQtYmxhbWVbMV0pCisnJWNsJzo6IGF1dGhvciBlbWFpbCBsb2NhbC1wYXJ0ICh0aGUgcGFydCBiZWZvcmUgdGhlICdAJyBzaWduKQorJyVjTCc6OiBhdXRob3IgbG9jYWwtcGFydCAoc2VlICclY2wnKSByZXNwZWN0aW5nIC5tYWlsbWFwLCBzZWUKKwlsaW5rZ2l0OmdpdC1zaG9ydGxvZ1sxXSBvciBsaW5rZ2l0OmdpdC1ibGFtZVsxXSkKICclY2QnOjogY29tbWl0dGVyIGRhdGUgKGZvcm1hdCByZXNwZWN0cyAtLWRhdGU9IG9wdGlvbikKICclY0QnOjogY29tbWl0dGVyIGRhdGUsIFJGQzI4MjIgc3R5bGUKICclY3InOjogY29tbWl0dGVyIGRhdGUsIHJlbGF0aXZlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0IGIvRG9jdW1lbnRhdGlvbi9yZXYtbGlzdC1vcHRpb25zLnR4dAppbmRleCA5MGZmOWUyLi5lMzdkZjkyIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3Jldi1saXN0LW9wdGlvbnMudHh0CisrKyBiL0RvY3VtZW50YXRpb24vcmV2LWxpc3Qtb3B0aW9ucy50eHQKQEAgLTU3OSw2ICs1NzksNyBAQAogY29udGVudHMgb2YgdGhlIHBhdGhzIGdpdmVuIG9uIHRoZSBjb21tYW5kIGxpbmUuICBBbGwgb3RoZXIKIGNvbW1pdHMgYXJlIG1hcmtlZCBhcyBUUkVFU0FNRSAoc3ViamVjdCB0byBiZSBzaW1wbGlmaWVkIGF3YXkpLgogCitpZm5kZWY6OmdpdC1zaG9ydGxvZ1tdCiBpZmRlZjo6Z2l0LXJldi1saXN0W10KIEJpc2VjdGlvbiBIZWxwZXJzCiB+fn5+fn5+fn5+fn5+fn5+fgpAQCAtNjM0LDggKzYzNSw5IEBACiBhZnRlciBhbGwgdGhlIHNvcnRlZCBjb21taXQgb2JqZWN0cywgdGhlcmUgd2lsbCBiZSB0aGUgc2FtZSB0ZXh0IGFzIGlmCiBgLS1iaXNlY3QtdmFyc2AgaGFkIGJlZW4gdXNlZCBhbG9uZS4KIGVuZGlmOjpnaXQtcmV2LWxpc3RbXQorZW5kaWY6OmdpdC1zaG9ydGxvZ1tdCiAKLQoraWZuZGVmOjpnaXQtc2hvcnRsb2dbXQogQ29tbWl0IE9yZGVyaW5nCiB+fn5+fn5+fn5+fn5+fn4KIApAQCAtNjc3LDcgKzY3OSw5IEBACiAJT3V0cHV0IHRoZSBjb21taXRzIGNob3NlbiB0byBiZSBzaG93biAoc2VlIENvbW1pdCBMaW1pdGluZwogCXNlY3Rpb24gYWJvdmUpIGluIHJldmVyc2Ugb3JkZXIuIENhbm5vdCBiZSBjb21iaW5lZCB3aXRoCiAJYC0td2Fsay1yZWZsb2dzYC4KK2VuZGlmOjpnaXQtc2hvcnRsb2dbXQogCitpZm5kZWY6OmdpdC1zaG9ydGxvZ1tdCiBPYmplY3QgVHJhdmVyc2FsCiB+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTgxNyw3ICs4MjEsOSBAQAogCiAtLWRvLXdhbGs6OgogCU92ZXJyaWRlcyBhIHByZXZpb3VzIGAtLW5vLXdhbGtgLgorZW5kaWY6OmdpdC1zaG9ydGxvZ1tdCiAKK2lmbmRlZjo6Z2l0LXNob3J0bG9nW10KIENvbW1pdCBGb3JtYXR0aW5nCiB+fn5+fn5+fn5+fn5+fn5+fgogCkBAIC05NzMsNyArOTc5LDkgQEAKIAljb3VudHMgYW5kIHByaW50IHRoZSBjb3VudCBmb3IgZXF1aXZhbGVudCBjb21taXRzIHNlcGFyYXRlZAogCWJ5IGEgdGFiLgogZW5kaWY6OmdpdC1yZXYtbGlzdFtdCitlbmRpZjo6Z2l0LXNob3J0bG9nW10KIAoraWZuZGVmOjpnaXQtc2hvcnRsb2dbXQogaWZuZGVmOjpnaXQtcmV2LWxpc3RbXQogRGlmZiBGb3JtYXR0aW5nCiB+fn5+fn5+fn5+fn5+fn4KQEAgLTEwMTYsMyArMTAyNCw0IEBACiAtdDo6CiAJU2hvdyB0aGUgdHJlZSBvYmplY3RzIGluIHRoZSBkaWZmIG91dHB1dC4gVGhpcyBpbXBsaWVzIGAtcmAuCiBlbmRpZjo6Z2l0LXJldi1saXN0W10KK2VuZGlmOjpnaXQtc2hvcnRsb2dbXQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWNvbmZpZy50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY29uZmlnLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2QyMDcxNi4uMDAwMDAwMAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktY29uZmlnLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMxOSArMCwwIEBACi1jb25maWcgQVBJCi09PT09PT09PT09Ci0KLVRoZSBjb25maWcgQVBJIGdpdmVzIGNhbGxlcnMgYSB3YXkgdG8gYWNjZXNzIEdpdCBjb25maWd1cmF0aW9uIGZpbGVzCi0oYW5kIGZpbGVzIHdoaWNoIGhhdmUgdGhlIHNhbWUgc3ludGF4KS4gU2VlIGxpbmtnaXQ6Z2l0LWNvbmZpZ1sxXSBmb3IgYQotZGlzY3Vzc2lvbiBvZiB0aGUgY29uZmlnIGZpbGUgc3ludGF4LgotCi1HZW5lcmFsIFVzYWdlCi0tLS0tLS0tLS0tLS0tCi0KLUNvbmZpZyBmaWxlcyBhcmUgcGFyc2VkIGxpbmVhcmx5LCBhbmQgZWFjaCB2YXJpYWJsZSBmb3VuZCBpcyBwYXNzZWQgdG8gYQotY2FsbGVyLXByb3ZpZGVkIGNhbGxiYWNrIGZ1bmN0aW9uLiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUKLWZvciBhbnkgYWN0aW9ucyB0byBiZSB0YWtlbiBvbiB0aGUgY29uZmlnIG9wdGlvbiwgYW5kIGlzIGZyZWUgdG8gaWdub3JlCi1zb21lIG9wdGlvbnMuIEl0IGlzIG5vdCB1bmNvbW1vbiBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gdG8gYmUgcGFyc2VkCi1zZXZlcmFsIHRpbWVzIGR1cmluZyB0aGUgcnVuIG9mIGEgR2l0IHByb2dyYW0sIHdpdGggZGlmZmVyZW50IGNhbGxiYWNrcwotcGlja2luZyBvdXQgZGlmZmVyZW50IHZhcmlhYmxlcyB1c2VmdWwgdG8gdGhlbXNlbHZlcy4KLQotQSBjb25maWcgY2FsbGJhY2sgZnVuY3Rpb24gdGFrZXMgdGhyZWUgcGFyYW1ldGVyczoKLQotLSB0aGUgbmFtZSBvZiB0aGUgcGFyc2VkIHZhcmlhYmxlLiBUaGlzIGlzIGluIGNhbm9uaWNhbCAiZmxhdCIgZm9ybTogdGhlCi0gIHNlY3Rpb24sIHN1YnNlY3Rpb24sIGFuZCB2YXJpYWJsZSBzZWdtZW50cyB3aWxsIGJlIHNlcGFyYXRlZCBieSBkb3RzLAotICBhbmQgdGhlIHNlY3Rpb24gYW5kIHZhcmlhYmxlIHNlZ21lbnRzIHdpbGwgYmUgYWxsIGxvd2VyY2FzZS4gRS5nLiwKLSAgYGNvcmUuaWdub3JlY2FzZWAsIGBkaWZmLlNvbWVUeXBlLnRleHRjb252YC4KLQotLSB0aGUgdmFsdWUgb2YgdGhlIGZvdW5kIHZhcmlhYmxlLCBhcyBhIHN0cmluZy4gSWYgdGhlIHZhcmlhYmxlIGhhZCBubwotICB2YWx1ZSBzcGVjaWZpZWQsIHRoZSB2YWx1ZSB3aWxsIGJlIE5VTEwgKHR5cGljYWxseSB0aGlzIG1lYW5zIGl0Ci0gIHNob3VsZCBiZSBpbnRlcnByZXRlZCBhcyBib29sZWFuIHRydWUpLgotCi0tIGEgdm9pZCBwb2ludGVyIHBhc3NlZCBpbiBieSB0aGUgY2FsbGVyIG9mIHRoZSBjb25maWcgQVBJOyB0aGlzIGNhbgotICBjb250YWluIGNhbGxiYWNrLXNwZWNpZmljIGRhdGEKLQotQSBjb25maWcgY2FsbGJhY2sgc2hvdWxkIHJldHVybiAwIGZvciBzdWNjZXNzLCBvciAtMSBpZiB0aGUgdmFyaWFibGUKLWNvdWxkIG5vdCBiZSBwYXJzZWQgcHJvcGVybHkuCi0KLUJhc2ljIENvbmZpZyBRdWVyeWluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU1vc3QgcHJvZ3JhbXMgd2lsbCBzaW1wbHkgd2FudCB0byBsb29rIHVwIHZhcmlhYmxlcyBpbiBhbGwgY29uZmlnIGZpbGVzCi10aGF0IEdpdCBrbm93cyBhYm91dCwgdXNpbmcgdGhlIG5vcm1hbCBwcmVjZWRlbmNlIHJ1bGVzLiBUbyBkbyB0aGlzLAotY2FsbCBgZ2l0X2NvbmZpZ2Agd2l0aCBhIGNhbGxiYWNrIGZ1bmN0aW9uIGFuZCB2b2lkIGRhdGEgcG9pbnRlci4KLQotYGdpdF9jb25maWdgIHdpbGwgcmVhZCBhbGwgY29uZmlnIHNvdXJjZXMgaW4gb3JkZXIgb2YgaW5jcmVhc2luZwotcHJpb3JpdHkuIFRodXMgYSBjYWxsYmFjayBzaG91bGQgdHlwaWNhbGx5IG92ZXJ3cml0ZSBwcmV2aW91c2x5LXNlZW4KLWVudHJpZXMgd2l0aCBuZXcgb25lcyAoZS5nLiwgaWYgYm90aCB0aGUgdXNlci13aWRlIGB+Ly5naXRjb25maWdgIGFuZAotcmVwby1zcGVjaWZpYyBgLmdpdC9jb25maWdgIGNvbnRhaW4gYGNvbG9yLnVpYCwgdGhlIGNvbmZpZyBtYWNoaW5lcnkKLXdpbGwgZmlyc3QgZmVlZCB0aGUgdXNlci13aWRlIG9uZSB0byB0aGUgY2FsbGJhY2ssIGFuZCB0aGVuIHRoZQotcmVwby1zcGVjaWZpYyBvbmU7IGJ5IG92ZXJ3cml0aW5nLCB0aGUgaGlnaGVyLXByaW9yaXR5IHJlcG8tc3BlY2lmaWMKLXZhbHVlIGlzIGxlZnQgYXQgdGhlIGVuZCkuCi0KLVRoZSBgY29uZmlnX3dpdGhfb3B0aW9uc2AgZnVuY3Rpb24gbGV0cyB0aGUgY2FsbGVyIGV4YW1pbmUgY29uZmlnCi13aGlsZSBhZGp1c3Rpbmcgc29tZSBvZiB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBgZ2l0X2NvbmZpZ2AuIEl0IHNob3VsZAotYWxtb3N0IG5ldmVyIGJlIHVzZWQgYnkgInJlZ3VsYXIiIEdpdCBjb2RlIHRoYXQgaXMgbG9va2luZyB1cAotY29uZmlndXJhdGlvbiB2YXJpYWJsZXMuIEl0IGlzIGludGVuZGVkIGZvciBhZHZhbmNlZCBjYWxsZXJzIGxpa2UKLWBnaXQtY29uZmlnYCwgd2hpY2ggYXJlIGludGVudGlvbmFsbHkgdHdlYWtpbmcgdGhlIG5vcm1hbCBjb25maWctbG9va3VwCi1wcm9jZXNzLiBJdCB0YWtlcyB0d28gZXh0cmEgcGFyYW1ldGVyczoKLQotYGNvbmZpZ19zb3VyY2VgOjoKLUlmIHRoaXMgcGFyYW1ldGVyIGlzIG5vbi1OVUxMLCBpdCBzcGVjaWZpZXMgdGhlIHNvdXJjZSB0byBwYXJzZSBmb3IKLWNvbmZpZ3VyYXRpb24sIHJhdGhlciB0aGFuIGxvb2tpbmcgaW4gdGhlIHVzdWFsIGZpbGVzLiBTZWUgYHN0cnVjdAotZ2l0X2NvbmZpZ19zb3VyY2VgIGluIGBjb25maWcuaGAgZm9yIGRldGFpbHMuIFJlZ3VsYXIgYGdpdF9jb25maWdgIGRlZmF1bHRzCi10byBgTlVMTGAuCi0KLWBvcHRzYDo6Ci1TcGVjaWZ5IG9wdGlvbnMgdG8gYWRqdXN0IHRoZSBiZWhhdmlvciBvZiBwYXJzaW5nIGNvbmZpZyBmaWxlcy4gU2VlIGBzdHJ1Y3QKLWNvbmZpZ19vcHRpb25zYCBpbiBgY29uZmlnLmhgIGZvciBkZXRhaWxzLiBBcyBhbiBleGFtcGxlOiByZWd1bGFyIGBnaXRfY29uZmlnYAotc2V0cyBgb3B0cy5yZXNwZWN0X2luY2x1ZGVzYCB0byBgMWAgYnkgZGVmYXVsdC4KLQotUmVhZGluZyBTcGVjaWZpYyBGaWxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UbyByZWFkIGEgc3BlY2lmaWMgZmlsZSBpbiBnaXQtY29uZmlnIGZvcm1hdCwgdXNlCi1gZ2l0X2NvbmZpZ19mcm9tX2ZpbGVgLiBUaGlzIHRha2VzIHRoZSBzYW1lIGNhbGxiYWNrIGFuZCBkYXRhIHBhcmFtZXRlcnMKLWFzIGBnaXRfY29uZmlnYC4KLQotUXVlcnlpbmcgRm9yIFNwZWNpZmljIFZhcmlhYmxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1Gb3IgcHJvZ3JhbXMgd2FudGluZyB0byBxdWVyeSBmb3Igc3BlY2lmaWMgdmFyaWFibGVzIGluIGEgbm9uLWNhbGxiYWNrCi1tYW5uZXIsIHRoZSBjb25maWcgQVBJIHByb3ZpZGVzIHR3byBmdW5jdGlvbnMgYGdpdF9jb25maWdfZ2V0X3ZhbHVlYAotYW5kIGBnaXRfY29uZmlnX2dldF92YWx1ZV9tdWx0aWAuIFRoZXkgYm90aCByZWFkIHZhbHVlcyBmcm9tIGFuIGludGVybmFsCi1jYWNoZSBnZW5lcmF0ZWQgcHJldmlvdXNseSBmcm9tIHJlYWRpbmcgdGhlIGNvbmZpZyBmaWxlcy4KLQotYGludCBnaXRfY29uZmlnX2dldF92YWx1ZShjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKip2YWx1ZSlgOjoKLQotCUZpbmRzIHRoZSBoaWdoZXN0LXByaW9yaXR5IHZhbHVlIGZvciB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YCwKLQlzdG9yZXMgdGhlIHBvaW50ZXIgdG8gaXQgaW4gYHZhbHVlYCBhbmQgcmV0dXJucyAwLiBXaGVuIHRoZQotCWNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYGtleWAgaXMgbm90IGZvdW5kLCByZXR1cm5zIDEgd2l0aG91dCB0b3VjaGluZwotCWB2YWx1ZWAuIFRoZSBjYWxsZXIgc2hvdWxkIG5vdCBmcmVlIG9yIG1vZGlmeSBgdmFsdWVgLCBhcyBpdCBpcyBvd25lZAotCWJ5IHRoZSBjYWNoZS4KLQotYGNvbnN0IHN0cnVjdCBzdHJpbmdfbGlzdCAqZ2l0X2NvbmZpZ19nZXRfdmFsdWVfbXVsdGkoY29uc3QgY2hhciAqa2V5KWA6OgotCi0JRmluZHMgYW5kIHJldHVybnMgdGhlIHZhbHVlIGxpc3QsIHNvcnRlZCBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIHByaW9yaXR5Ci0JZm9yIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGBrZXlgLiBXaGVuIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlCi0JYGtleWAgaXMgbm90IGZvdW5kLCByZXR1cm5zIE5VTEwuIFRoZSBjYWxsZXIgc2hvdWxkIG5vdCBmcmVlIG9yIG1vZGlmeQotCXRoZSByZXR1cm5lZCBwb2ludGVyLCBhcyBpdCBpcyBvd25lZCBieSB0aGUgY2FjaGUuCi0KLWB2b2lkIGdpdF9jb25maWdfY2xlYXIodm9pZClgOjoKLQotCVJlc2V0cyBhbmQgaW52YWxpZGF0ZXMgdGhlIGNvbmZpZyBjYWNoZS4KLQotVGhlIGNvbmZpZyBBUEkgYWxzbyBwcm92aWRlcyB0eXBlIHNwZWNpZmljIEFQSSBmdW5jdGlvbnMgd2hpY2ggZG8gY29udmVyc2lvbgotYXMgd2VsbCBhcyByZXRyaWV2YWwgZm9yIHRoZSBxdWVyaWVkIHZhcmlhYmxlLCBpbmNsdWRpbmc6Ci0KLWBpbnQgZ2l0X2NvbmZpZ19nZXRfaW50KGNvbnN0IGNoYXIgKmtleSwgaW50ICpkZXN0KWA6OgotCi0JRmluZHMgYW5kIHBhcnNlcyB0aGUgdmFsdWUgdG8gYW4gaW50ZWdlciBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUKLQlga2V5YC4gRGllcyBvbiBlcnJvcjsgb3RoZXJ3aXNlLCBzdG9yZXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJzZWQgaW50ZWdlciBpbgotCWBkZXN0YCBhbmQgcmV0dXJucyAwLiBXaGVuIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGBrZXlgIGlzIG5vdCBmb3VuZCwKLQlyZXR1cm5zIDEgd2l0aG91dCB0b3VjaGluZyBgZGVzdGAuCi0KLWBpbnQgZ2l0X2NvbmZpZ19nZXRfdWxvbmcoY29uc3QgY2hhciAqa2V5LCB1bnNpZ25lZCBsb25nICpkZXN0KWA6OgotCi0JU2ltaWxhciB0byBgZ2l0X2NvbmZpZ19nZXRfaW50YCBidXQgZm9yIHVuc2lnbmVkIGxvbmdzLgotCi1gaW50IGdpdF9jb25maWdfZ2V0X2Jvb2woY29uc3QgY2hhciAqa2V5LCBpbnQgKmRlc3QpYDo6Ci0KLQlGaW5kcyBhbmQgcGFyc2VzIHRoZSB2YWx1ZSBpbnRvIGEgYm9vbGVhbiB2YWx1ZSwgZm9yIHRoZSBjb25maWd1cmF0aW9uCi0JdmFyaWFibGUgYGtleWAgcmVzcGVjdGluZyBrZXl3b3JkcyBsaWtlICJ0cnVlIiBhbmQgImZhbHNlIi4gSW50ZWdlcgotCXZhbHVlcyBhcmUgY29udmVydGVkIGludG8gdHJ1ZS9mYWxzZSB2YWx1ZXMgKHdoZW4gdGhleSBhcmUgbm9uLXplcm8gb3IKLQl6ZXJvLCByZXNwZWN0aXZlbHkpLiBPdGhlciB2YWx1ZXMgY2F1c2UgYSBkaWUoKS4gSWYgcGFyc2luZyBpcyBzdWNjZXNzZnVsLAotCXN0b3JlcyB0aGUgdmFsdWUgb2YgdGhlIHBhcnNlZCByZXN1bHQgaW4gYGRlc3RgIGFuZCByZXR1cm5zIDAuIFdoZW4gdGhlCi0JY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YCBpcyBub3QgZm91bmQsIHJldHVybnMgMSB3aXRob3V0IHRvdWNoaW5nCi0JYGRlc3RgLgotCi1gaW50IGdpdF9jb25maWdfZ2V0X2Jvb2xfb3JfaW50KGNvbnN0IGNoYXIgKmtleSwgaW50ICppc19ib29sLCBpbnQgKmRlc3QpYDo6Ci0KLQlTaW1pbGFyIHRvIGBnaXRfY29uZmlnX2dldF9ib29sYCwgZXhjZXB0IHRoYXQgaW50ZWdlcnMgYXJlIGNvcGllZCBhcy1pcywKLQlhbmQgYGlzX2Jvb2xgIGZsYWcgaXMgdW5zZXQuCi0KLWBpbnQgZ2l0X2NvbmZpZ19nZXRfbWF5YmVfYm9vbChjb25zdCBjaGFyICprZXksIGludCAqZGVzdClgOjoKLQotCVNpbWlsYXIgdG8gYGdpdF9jb25maWdfZ2V0X2Jvb2xgLCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIC0xIG9uIGVycm9yCi0JcmF0aGVyIHRoYW4gZHlpbmcuCi0KLWBpbnQgZ2l0X2NvbmZpZ19nZXRfc3RyaW5nX2NvbnN0KGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqKmRlc3QpYDo6Ci0KLQlBbGxvY2F0ZXMgYW5kIGNvcGllcyB0aGUgcmV0cmlldmVkIHN0cmluZyBpbnRvIHRoZSBgZGVzdGAgcGFyYW1ldGVyIGZvcgotCXRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGBrZXlgOyBpZiBOVUxMIHN0cmluZyBpcyBnaXZlbiwgcHJpbnRzIGFuCi0JZXJyb3IgbWVzc2FnZSBhbmQgcmV0dXJucyAtMS4gV2hlbiB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YCBpcwotCW5vdCBmb3VuZCwgcmV0dXJucyAxIHdpdGhvdXQgdG91Y2hpbmcgYGRlc3RgLgotCi1gaW50IGdpdF9jb25maWdfZ2V0X3N0cmluZyhjb25zdCBjaGFyICprZXksIGNoYXIgKipkZXN0KWA6OgotCi0JU2ltaWxhciB0byBgZ2l0X2NvbmZpZ19nZXRfc3RyaW5nX2NvbnN0YCwgZXhjZXB0IHRoYXQgcmV0cmlldmVkIHZhbHVlCi0JY29waWVkIGludG8gdGhlIGBkZXN0YCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIHN0cmluZy4KLQotYGludCBnaXRfY29uZmlnX2dldF9wYXRobmFtZShjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKipkZXN0KWA6OgotCi0JU2ltaWxhciB0byBgZ2l0X2NvbmZpZ19nZXRfc3RyaW5nYCwgYnV0IGV4cGFuZHMgYH5gIG9yIGB+dXNlcmAgaW50bwotCXRoZSB1c2VyJ3MgaG9tZSBkaXJlY3Rvcnkgd2hlbiBmb3VuZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoLgotCi1gZ2l0X2RpZV9jb25maWcoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICplcnIsIC4uLilgOjoKLQotCUZpcnN0IHByaW50cyB0aGUgZXJyb3IgbWVzc2FnZSBzcGVjaWZpZWQgYnkgdGhlIGNhbGxlciBpbiBgZXJyYCBhbmQgdGhlbgotCWRpZXMgcHJpbnRpbmcgdGhlIGxpbmUgbnVtYmVyIGFuZCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBoaWdoZXN0IHByaW9yaXR5Ci0JdmFsdWUgZm9yIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGBrZXlgLgotCi1gdm9pZCBnaXRfZGllX2NvbmZpZ19saW5lbnIoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVucilgOjoKLQotCUhlbHBlciBmdW5jdGlvbiB3aGljaCBmb3JtYXRzIHRoZSBkaWUgZXJyb3IgbWVzc2FnZSBhY2NvcmRpbmcgdG8gdGhlCi0JcGFyYW1ldGVycyBlbnRlcmVkLiBVc2VkIGJ5IGBnaXRfZGllX2NvbmZpZygpYC4gSXQgY2FuIGJlIHVzZWQgYnkgY2FsbGVycwotCWhhbmRsaW5nIGBnaXRfY29uZmlnX2dldF92YWx1ZV9tdWx0aSgpYCB0byBwcmludCB0aGUgY29ycmVjdCBlcnJvciBtZXNzYWdlCi0JZm9yIHRoZSBkZXNpcmVkIHZhbHVlLgotCi1TZWUgdGVzdC1jb25maWcuYyBmb3IgdXNhZ2UgZXhhbXBsZXMuCi0KLVZhbHVlIFBhcnNpbmcgSGVscGVycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRvIGFpZCBpbiBwYXJzaW5nIHN0cmluZyB2YWx1ZXMsIHRoZSBjb25maWcgQVBJIHByb3ZpZGVzIGNhbGxiYWNrcyB3aXRoCi1hIG51bWJlciBvZiBoZWxwZXIgZnVuY3Rpb25zLCBpbmNsdWRpbmc6Ci0KLWBnaXRfY29uZmlnX2ludGA6OgotUGFyc2UgdGhlIHN0cmluZyB0byBhbiBpbnRlZ2VyLCBpbmNsdWRpbmcgdW5pdCBmYWN0b3JzLiBEaWVzIG9uIGVycm9yOwotb3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LgotCi1gZ2l0X2NvbmZpZ191bG9uZ2A6OgotSWRlbnRpY2FsIHRvIGBnaXRfY29uZmlnX2ludGAsIGJ1dCBmb3IgdW5zaWduZWQgbG9uZ3MuCi0KLWBnaXRfY29uZmlnX2Jvb2xgOjoKLVBhcnNlIGEgc3RyaW5nIGludG8gYSBib29sZWFuIHZhbHVlLCByZXNwZWN0aW5nIGtleXdvcmRzIGxpa2UgInRydWUiIGFuZAotImZhbHNlIi4gSW50ZWdlciB2YWx1ZXMgYXJlIGNvbnZlcnRlZCBpbnRvIHRydWUvZmFsc2UgdmFsdWVzICh3aGVuIHRoZXkKLWFyZSBub24temVybyBvciB6ZXJvLCByZXNwZWN0aXZlbHkpLiBPdGhlciB2YWx1ZXMgY2F1c2UgYSBkaWUoKS4gSWYKLXBhcnNpbmcgaXMgc3VjY2Vzc2Z1bCwgdGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmVzdWx0LgotCi1gZ2l0X2NvbmZpZ19ib29sX29yX2ludGA6OgotU2FtZSBhcyBgZ2l0X2NvbmZpZ19ib29sYCwgZXhjZXB0IHRoYXQgaW50ZWdlcnMgYXJlIHJldHVybmVkIGFzLWlzLCBhbmQKLWFuIGBpc19ib29sYCBmbGFnIGlzIHVuc2V0LgotCi1gZ2l0X3BhcnNlX21heWJlX2Jvb2xgOjoKLVNhbWUgYXMgYGdpdF9jb25maWdfYm9vbGAsIGV4Y2VwdCB0aGF0IGl0IHJldHVybnMgLTEgb24gZXJyb3IgcmF0aGVyCi10aGFuIGR5aW5nLgotCi1gZ2l0X2NvbmZpZ19zdHJpbmdgOjoKLUFsbG9jYXRlcyBhbmQgY29waWVzIHRoZSB2YWx1ZSBzdHJpbmcgaW50byB0aGUgYGRlc3RgIHBhcmFtZXRlcjsgaWYgbm8KLXN0cmluZyBpcyBnaXZlbiwgcHJpbnRzIGFuIGVycm9yIG1lc3NhZ2UgYW5kIHJldHVybnMgLTEuCi0KLWBnaXRfY29uZmlnX3BhdGhuYW1lYDo6Ci1TaW1pbGFyIHRvIGBnaXRfY29uZmlnX3N0cmluZ2AsIGJ1dCBleHBhbmRzIGB+YCBvciBgfnVzZXJgIGludG8gdGhlCi11c2VyJ3MgaG9tZSBkaXJlY3Rvcnkgd2hlbiBmb3VuZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoLgotCi1JbmNsdWRlIERpcmVjdGl2ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1CeSBkZWZhdWx0LCB0aGUgY29uZmlnIHBhcnNlciBkb2VzIG5vdCByZXNwZWN0IGluY2x1ZGUgZGlyZWN0aXZlcy4KLUhvd2V2ZXIsIGEgY2FsbGVyIGNhbiB1c2UgdGhlIHNwZWNpYWwgYGdpdF9jb25maWdfaW5jbHVkZWAgd3JhcHBlcgotY2FsbGJhY2sgdG8gc3VwcG9ydCB0aGVtLiBUbyBkbyBzbywgeW91IHNpbXBseSB3cmFwIHlvdXIgInJlYWwiIGNhbGxiYWNrCi1mdW5jdGlvbiBhbmQgZGF0YSBwb2ludGVyIGluIGEgYHN0cnVjdCBjb25maWdfaW5jbHVkZV9kYXRhYCwgYW5kIHBhc3MKLXRoZSB3cmFwcGVyIHRvIHRoZSByZWd1bGFyIGNvbmZpZy1yZWFkaW5nIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLWludCByZWFkX2ZpbGVfd2l0aF9pbmNsdWRlKGNvbnN0IGNoYXIgKmZpbGUsIGNvbmZpZ19mbl90IGZuLCB2b2lkICpkYXRhKQotewotCXN0cnVjdCBjb25maWdfaW5jbHVkZV9kYXRhIGluYyA9IENPTkZJR19JTkNMVURFX0lOSVQ7Ci0JaW5jLmZuID0gZm47Ci0JaW5jLmRhdGEgPSBkYXRhOwotCXJldHVybiBnaXRfY29uZmlnX2Zyb21fZmlsZShnaXRfY29uZmlnX2luY2x1ZGUsIGZpbGUsICZpbmMpOwotfQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1gZ2l0X2NvbmZpZ2AgcmVzcGVjdHMgaW5jbHVkZXMgYXV0b21hdGljYWxseS4gVGhlIGxvd2VyLWxldmVsCi1gZ2l0X2NvbmZpZ19mcm9tX2ZpbGVgIGRvZXMgbm90LgotCi1DdXN0b20gQ29uZmlnc2V0cwotLS0tLS0tLS0tLS0tLS0tLS0KLQotQSBgY29uZmlnX3NldGAgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGFuIGluLW1lbW9yeSBjYWNoZSBmb3IKLWNvbmZpZy1saWtlIGZpbGVzIHRoYXQgdGhlIGNhbGxlciBzcGVjaWZpZXMgKGkuZS4sIGZpbGVzIGxpa2UgYC5naXRtb2R1bGVzYCwKLWB+Ly5naXRjb25maWdgIGV0Yy4pLiBGb3IgZXhhbXBsZSwKLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotc3RydWN0IGNvbmZpZ19zZXQgZ21fY29uZmlnOwotZ2l0X2NvbmZpZ3NldF9pbml0KCZnbV9jb25maWcpOwotaW50IGI7Ci0vKiB3ZSBhZGQgY29uZmlnIGZpbGVzIHRvIHRoZSBjb25maWdfc2V0ICovCi1naXRfY29uZmlnc2V0X2FkZF9maWxlKCZnbV9jb25maWcsICIuZ2l0bW9kdWxlcyIpOwotZ2l0X2NvbmZpZ3NldF9hZGRfZmlsZSgmZ21fY29uZmlnLCAiLmdpdG1vZHVsZXNfYWx0Iik7Ci0KLWlmICghZ2l0X2NvbmZpZ3NldF9nZXRfYm9vbChnbV9jb25maWcsICJzdWJtb2R1bGUuZnJvdHouaWdub3JlIiwgJmIpKSB7Ci0JLyogaGFjayBoYWNrIGhhY2sgKi8KLX0KLQotLyogd2hlbiB3ZSBhcmUgZG9uZSB3aXRoIHRoZSBjb25maWdzZXQgKi8KLWdpdF9jb25maWdzZXRfY2xlYXIoJmdtX2NvbmZpZyk7Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUNvbmZpZ3NldCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciB0aGUgYWJvdmUgbWVudGlvbmVkIHdvcmsgZmxvdywgaW5jbHVkaW5nOgotCi1gdm9pZCBnaXRfY29uZmlnc2V0X2luaXQoc3RydWN0IGNvbmZpZ19zZXQgKmNzKWA6OgotCi0JSW5pdGlhbGl6ZXMgdGhlIGNvbmZpZ19zZXQgYGNzYC4KLQotYGludCBnaXRfY29uZmlnc2V0X2FkZF9maWxlKHN0cnVjdCBjb25maWdfc2V0ICpjcywgY29uc3QgY2hhciAqZmlsZW5hbWUpYDo6Ci0KLQlQYXJzZXMgdGhlIGZpbGUgYW5kIGFkZHMgdGhlIHZhcmlhYmxlLXZhbHVlIHBhaXJzIHRvIHRoZSBgY29uZmlnX3NldGAsCi0JZGllcyBpZiB0aGVyZSBpcyBhbiBlcnJvciBpbiBwYXJzaW5nIHRoZSBmaWxlLiBSZXR1cm5zIDAgb24gc3VjY2Vzcywgb3IKLQktMSBpZiB0aGUgZmlsZSBkb2VzIG5vdCBleGlzdCBvciBpcyBpbmFjY2Vzc2libGUuIFRoZSB1c2VyIGhhcyB0byBkZWNpZGUKLQlpZiBoZSB3YW50cyB0byBmcmVlIHRoZSBpbmNvbXBsZXRlIGNvbmZpZ3NldCBvciBjb250aW51ZSB1c2luZyBpdCB3aGVuCi0JdGhlIGZ1bmN0aW9uIHJldHVybnMgLTEuCi0KLWBpbnQgZ2l0X2NvbmZpZ3NldF9nZXRfdmFsdWUoc3RydWN0IGNvbmZpZ19zZXQgKmNzLCBjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKip2YWx1ZSlgOjoKLQotCUZpbmRzIHRoZSBoaWdoZXN0LXByaW9yaXR5IHZhbHVlIGZvciB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YAotCWFuZCBjb25maWcgc2V0IGBjc2AsIHN0b3JlcyB0aGUgcG9pbnRlciB0byBpdCBpbiBgdmFsdWVgIGFuZCByZXR1cm5zIDAuCi0JV2hlbiB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YCBpcyBub3QgZm91bmQsIHJldHVybnMgMSB3aXRob3V0Ci0JdG91Y2hpbmcgYHZhbHVlYC4gVGhlIGNhbGxlciBzaG91bGQgbm90IGZyZWUgb3IgbW9kaWZ5IGB2YWx1ZWAsIGFzIGl0Ci0JaXMgb3duZWQgYnkgdGhlIGNhY2hlLgotCi1gY29uc3Qgc3RydWN0IHN0cmluZ19saXN0ICpnaXRfY29uZmlnc2V0X2dldF92YWx1ZV9tdWx0aShzdHJ1Y3QgY29uZmlnX3NldCAqY3MsIGNvbnN0IGNoYXIgKmtleSlgOjoKLQotCUZpbmRzIGFuZCByZXR1cm5zIHRoZSB2YWx1ZSBsaXN0LCBzb3J0ZWQgaW4gb3JkZXIgb2YgaW5jcmVhc2luZyBwcmlvcml0eQotCWZvciB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YCBhbmQgY29uZmlnIHNldCBgY3NgLiBXaGVuIHRoZQotCWNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYGtleWAgaXMgbm90IGZvdW5kLCByZXR1cm5zIE5VTEwuIFRoZSBjYWxsZXIKLQlzaG91bGQgbm90IGZyZWUgb3IgbW9kaWZ5IHRoZSByZXR1cm5lZCBwb2ludGVyLCBhcyBpdCBpcyBvd25lZCBieSB0aGUgY2FjaGUuCi0KLWB2b2lkIGdpdF9jb25maWdzZXRfY2xlYXIoc3RydWN0IGNvbmZpZ19zZXQgKmNzKWA6OgotCi0JQ2xlYXJzIGBjb25maWdfc2V0YCBzdHJ1Y3R1cmUsIHJlbW92ZXMgYWxsIHNhdmVkIHZhcmlhYmxlLXZhbHVlIHBhaXJzLgotCi1JbiBhZGRpdGlvbiB0byBhYm92ZSBmdW5jdGlvbnMsIHRoZSBgY29uZmlnX3NldGAgQVBJIHByb3ZpZGVzIHR5cGUgc3BlY2lmaWMKLWZ1bmN0aW9ucyBpbiB0aGUgdmVpbiBvZiBgZ2l0X2NvbmZpZ19nZXRfaW50YCBhbmQgZmFtaWx5IGJ1dCB3aXRoIGFuIGV4dHJhCi1wYXJhbWV0ZXIsIHBvaW50ZXIgdG8gc3RydWN0IGBjb25maWdfc2V0YC4KLVRoZXkgYWxsIGJlaGF2ZSBzaW1pbGFybHkgdG8gdGhlIGBnaXRfY29uZmlnX2dldCooKWAgZmFtaWx5IGRlc2NyaWJlZCBpbgotIlF1ZXJ5aW5nIEZvciBTcGVjaWZpYyBWYXJpYWJsZXMiIGFib3ZlLgotCi1Xcml0aW5nIENvbmZpZyBGaWxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotR2l0IGdpdmVzIG11bHRpcGxlIGVudHJ5IHBvaW50cyBpbiB0aGUgQ29uZmlnIEFQSSB0byB3cml0ZSBjb25maWcgdmFsdWVzIHRvCi1maWxlcyBuYW1lbHkgYGdpdF9jb25maWdfc2V0X2luX2ZpbGVgIGFuZCBgZ2l0X2NvbmZpZ19zZXRgLCB3aGljaCB3cml0ZSB0bwotYSBzcGVjaWZpYyBjb25maWcgZmlsZSBvciB0byBgLmdpdC9jb25maWdgIHJlc3BlY3RpdmVseS4gVGhleSBib3RoIHRha2UgYQota2V5L3ZhbHVlIHBhaXIgYXMgcGFyYW1ldGVyLgotSW4gdGhlIGVuZCB0aGV5IGJvdGggY2FsbCBgZ2l0X2NvbmZpZ19zZXRfbXVsdGl2YXJfaW5fZmlsZWAgd2hpY2ggdGFrZXMgZm91cgotcGFyYW1ldGVyczoKLQotLSB0aGUgbmFtZSBvZiB0aGUgZmlsZSwgYXMgYSBzdHJpbmcsIHRvIHdoaWNoIGtleS92YWx1ZSBwYWlycyB3aWxsIGJlIHdyaXR0ZW4uCi0KLS0gdGhlIG5hbWUgb2Yga2V5LCBhcyBhIHN0cmluZy4gVGhpcyBpcyBpbiBjYW5vbmljYWwgImZsYXQiIGZvcm06IHRoZSBzZWN0aW9uLAotICBzdWJzZWN0aW9uLCBhbmQgdmFyaWFibGUgc2VnbWVudHMgd2lsbCBiZSBzZXBhcmF0ZWQgYnkgZG90cywgYW5kIHRoZSBzZWN0aW9uCi0gIGFuZCB2YXJpYWJsZSBzZWdtZW50cyB3aWxsIGJlIGFsbCBsb3dlcmNhc2UuCi0gIEUuZy4sIGBjb3JlLmlnbm9yZWNhc2VgLCBgZGlmZi5Tb21lVHlwZS50ZXh0Y29udmAuCi0KLS0gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSwgYXMgYSBzdHJpbmcuIElmIHZhbHVlIGlzIGVxdWFsIHRvIE5VTEwsIGl0IHdpbGwKLSAgcmVtb3ZlIHRoZSBtYXRjaGluZyBrZXkgZnJvbSB0aGUgY29uZmlnIGZpbGUuCi0KLS0gdGhlIHZhbHVlIHJlZ2V4LCBhcyBhIHN0cmluZy4gSXQgd2lsbCBkaXNyZWdhcmQga2V5L3ZhbHVlIHBhaXJzIHdoZXJlIHZhbHVlCi0gIGRvZXMgbm90IG1hdGNoLgotCi0tIGEgbXVsdGlfcmVwbGFjZSB2YWx1ZSwgYXMgYW4gaW50LiBJZiB2YWx1ZSBpcyBlcXVhbCB0byB6ZXJvLCBub3RoaW5nIG9yIG9ubHkKLSAgb25lIG1hdGNoaW5nIGtleS92YWx1ZSBpcyByZXBsYWNlZCwgZWxzZSBhbGwgbWF0Y2hpbmcga2V5L3ZhbHVlcyAocmVnYXJkbGVzcwotICBob3cgbWFueSkgYXJlIHJlbW92ZWQsIGJlZm9yZSB0aGUgbmV3IHBhaXIgaXMgd3JpdHRlbi4KLQotSXQgcmV0dXJucyAwIG9uIHN1Y2Nlc3MuCi0KLUFsc28sIHRoZXJlIGFyZSBmdW5jdGlvbnMgYGdpdF9jb25maWdfcmVuYW1lX3NlY3Rpb25gIGFuZAotYGdpdF9jb25maWdfcmVuYW1lX3NlY3Rpb25faW5fZmlsZWAgd2l0aCBwYXJhbWV0ZXJzIGBvbGRfbmFtZWAgYW5kIGBuZXdfbmFtZWAKLWZvciByZW5hbWluZyBvciByZW1vdmluZyBzZWN0aW9ucyBpbiB0aGUgY29uZmlnIGZpbGVzLiBJZiBOVUxMIGlzIHBhc3NlZAotdGhyb3VnaCBgbmV3X25hbWVgIHBhcmFtZXRlciwgdGhlIHNlY3Rpb24gd2lsbCBiZSByZW1vdmVkIGZyb20gdGhlIGNvbmZpZyBmaWxlLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWdyZXAudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLWdyZXAudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjljYzg5Li4wMDAwMDAwCi0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1ncmVwLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotZ3JlcCBBUEkKLT09PT09PT09Ci0KLVRhbGsgYWJvdXQgPGdyZXAuaD4sIHRoaW5ncyBsaWtlOgotCi0qIGdyZXBfYnVmZmVyKCkKLQotKEpDKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLW9iamVjdC1hY2Nlc3MudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLW9iamVjdC1hY2Nlc3MudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjI5NjIyLi4wMDAwMDAwCi0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1vYmplY3QtYWNjZXNzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLW9iamVjdCBhY2Nlc3MgQVBJCi09PT09PT09PT09PT09PT09PQotCi1UYWxrIGFib3V0IDxzaGExLWZpbGUuYz4gYW5kIDxvYmplY3QuaD4gZmFtaWx5LCB0aGluZ3MgbGlrZQotCi0qIHJlYWRfc2hhMV9maWxlKCkKLSogcmVhZF9vYmplY3Rfd2l0aF9yZWZlcmVuY2UoKQotKiBoYXNfc2hhMV9maWxlKCkKLSogd3JpdGVfc2hhMV9maWxlKCkKLSogcHJldGVuZF9vYmplY3RfZmlsZSgpCi0qIGxvb2t1cF97b2JqZWN0LGNvbW1pdCx0YWcsYmxvYix0cmVlfQotKiBwYXJzZV97b2JqZWN0LGNvbW1pdCx0YWcsYmxvYix0cmVlfQotKiBVc2Ugb2Ygb2JqZWN0IGZsYWdzCi0KLShKQywgU2hhd24sIERhbmllbCwgRHNjaG8sIExpbnVzKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXF1b3RlLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1xdW90ZS50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4YTFiY2UuLjAwMDAwMDAKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXF1b3RlLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXF1b3RlIEFQSQotPT09PT09PT09Ci0KLVRhbGsgYWJvdXQgPHF1b3RlLmg+LCB0aGluZ3MgbGlrZQotCi0qIHNxX3F1b3RlIGFuZCB1bnF1b3RlCi0qIGNfc3R5bGUgcXVvdGUgYW5kIHVucXVvdGUKLSogcXVvdGluZyBmb3IgZm9yZWlnbiBsYW5ndWFnZXMKLQotKEpDKQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN1Ym1vZHVsZS1jb25maWcudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXN1Ym1vZHVsZS1jb25maWcudHh0CmluZGV4IGZiMDYwODkuLmM0MDk1NTkgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS1zdWJtb2R1bGUtY29uZmlnLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktc3VibW9kdWxlLWNvbmZpZy50eHQKQEAgLTU4LDcgKzU4LDcgQEAKIAogV2hlbmV2ZXIgYSBzdWJtb2R1bGUgY29uZmlndXJhdGlvbiBpcyBwYXJzZWQgaW4gYHBhcnNlX3N1Ym1vZHVsZV9jb25maWdfb3B0aW9uYAogdmlhIGUuZy4gYGdpdG1vZHVsZXNfY29uZmlnKClgLCBpdCB3aWxsIG92ZXJ3cml0ZSB0aGUgbnVsbF9zaGExIGVudHJ5LgotU28gaW4gdGhlIG5vcm1hbCBjYXNlLCB3aGVuIEhFQUQ6LmdpdG1vZHVsZXMgaXMgcGFyc2VkIGZpcnN0IGFuZCB0aGVuIG92ZXJsYXllZAorU28gaW4gdGhlIG5vcm1hbCBjYXNlLCB3aGVuIEhFQUQ6LmdpdG1vZHVsZXMgaXMgcGFyc2VkIGZpcnN0IGFuZCB0aGVuIG92ZXJsYWlkCiB3aXRoIHRoZSByZXBvc2l0b3J5IGNvbmZpZ3VyYXRpb24sIHRoZSBudWxsX3NoYTEgZW50cnkgY29udGFpbnMgdGhlIGxvY2FsCiBjb25maWd1cmF0aW9uIG9mIGEgc3VibW9kdWxlIChlLmcuIGNvbnNvbGlkYXRlZCB2YWx1ZXMgZnJvbSBsb2NhbCBnaXQKIGNvbmZpZ3VyYXRpb24gYW5kIHRoZSAuZ2l0bW9kdWxlcyBmaWxlIGluIHRoZSB3b3JrdHJlZSkuCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGktdHJhY2UyLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS10cmFjZTIudHh0CmluZGV4IGEwNDVkYmUuLjE3NDkwYjUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS10cmFjZTIudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2FwaS10cmFjZTIudHh0CkBAIC0xNzgsNyArMTc4LDcgQEAKIAogPT0gUHVibGljIEFQSQogCi1BbGwgVHJhY2UyIEFQSSBmdW5jdGlvbnMgc2VuZCBhIG1lc3NzYWdlIHRvIGFsbCBvZiB0aGUgYWN0aXZlCitBbGwgVHJhY2UyIEFQSSBmdW5jdGlvbnMgc2VuZCBhIG1lc3NhZ2UgdG8gYWxsIG9mIHRoZSBhY3RpdmUKIFRyYWNlMiBUYXJnZXRzLiAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgc2V0IG9mIGF2YWlsYWJsZQogbWVzc2FnZXMuCiAKQEAgLTM3Nyw3ICszNzcsNyBAQAogCWFuZCB0aGUgdGhyZWFkIGVsYXBzZWQgdGltZS4KICsKIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYnkgdGhlIHRocmVhZC1wcm9jIGJlZm9yZSBpdCByZXR1cm5zCi0oc28gdGhhdCB0aGUgY29vcmVjdCBUTFMgZGF0YSBpcyB1c2VkIGFuZCBjbGVhbmVkIHVwLiAgSXQgc2hvdWxkCisoc28gdGhhdCB0aGUgY29ycmVjdCBUTFMgZGF0YSBpcyB1c2VkIGFuZCBjbGVhbmVkIHVwKS4gIEl0IHNob3VsZAogbm90IGJlIGNhbGxlZCBieSB0aGUgY2FsbGVyIG9mIGBwdGhyZWFkX2pvaW4oKWAuCiAKID09PSBSZWdpb24gYW5kIERhdGEgTWVzc2FnZXMKQEAgLTQwNiw3ICs0MDYsNyBAQAogYmVpbmcgc3RhcnRlZCwgc3VjaCBhcyAicmVhZF9yZWN1cnNpdmUiIG9yICJkb19yZWFkX2luZGV4Ii4KICsKIFRoZSBgcmVwb2AgZmllbGQsIGlmIHNldCwgd2lsbCBiZSB1c2VkIHRvIGdldCB0aGUgInJlcG8taWQiLCBzbyB0aGF0Ci1yZWN1cnNpdmUgb2VyYXRpb25zIGNhbiBiZSBhdHRyaWJ1dGVkIHRvIHRoZSBjb3JyZWN0IHJlcG9zaXRvcnkuCityZWN1cnNpdmUgb3BlcmF0aW9ucyBjYW4gYmUgYXR0cmlidXRlZCB0byB0aGUgY29ycmVjdCByZXBvc2l0b3J5LgogCiBgdm9pZCB0cmFjZTJfcmVnaW9uX2xlYXZlKGNvbnN0IGNoYXIgKmNhdGVnb3J5LCBjb25zdCBjaGFyICpsYWJlbCwgY29uc3Qgc3RydWN0IHJlcG9zaXRvcnkgKnJlcG8pYDo6CiAKQEAgLTQyMSw3ICs0MjEsNyBAQAogYW5kIHJlcG9ydHMgdGhlIGVsYXBzZWQgdGltZSBvZiB0aGUgc3RhY2sgZnJhbWUuCiArCiBUaGUgYGNhdGVnb3J5YCwgYGxhYmVsYCwgYW5kIGByZXBvYCBmaWVsZHMgYXJlIHRoZSBzYW1lIGFzIGFib3ZlLgotVGhlIGBjYXRlZ29yeWAgYW5kIGBsYWJlbGAgZG8gbm90IG5lZWQgdG8gbWF0Y2ggdGhlIGNvcnJlcHNvbmRpbmcKK1RoZSBgY2F0ZWdvcnlgIGFuZCBgbGFiZWxgIGRvIG5vdCBuZWVkIHRvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nCiAicmVnaW9uX2VudGVyIiBtZXNzYWdlLCBidXQgaXQgbWFrZXMgdGhlIGRhdGEgc3RyZWFtIGVhc2llciB0bwogdW5kZXJzdGFuZC4KIApAQCAtODE2LDcgKzgxNiw3IEBACiBOb3RlIHRoYXQgdGhlIHNlc3Npb24taWQgb2YgdGhlIGNoaWxkIHByb2Nlc3MgaXMgbm90IGF2YWlsYWJsZSB0bwogdGhlIGN1cnJlbnQvc3Bhd25pbmcgcHJvY2Vzcywgc28gdGhlIGNoaWxkJ3MgUElEIGlzIHJlcG9ydGVkIGhlcmUgYXMKIGEgaGludCBmb3IgcG9zdC1wcm9jZXNzaW5nLiAgKEJ1dCBpdCBpcyBvbmx5IGEgaGludCBiZWNhdXNlIHRoZSBjaGlsZAotcHJvY2VzIG1heSBiZSBhIHNoZWxsIHNjcmlwdCB3aGljaCBkb2Vzbid0IGhhdmUgYSBzZXNzaW9uLWlkLikKK3Byb2Nlc3MgbWF5IGJlIGEgc2hlbGwgc2NyaXB0IHdoaWNoIGRvZXNuJ3QgaGF2ZSBhIHNlc3Npb24taWQuKQogKwogTm90ZSB0aGF0IHRoZSBgdF9yZWxgIGZpZWxkIGNvbnRhaW5zIHRoZSBvYnNlcnZlZCBydW4gdGltZSBpbiBzZWNvbmRzCiBmb3IgdGhlIGNoaWxkIHByb2Nlc3MgKHN0YXJ0aW5nIGJlZm9yZSB0aGUgZm9yay9leGVjL3NwYXduIGFuZApAQCAtMTE3Niw3ICsxMTc2LDcgQEAKICsKIFJlZ2lvbnMgbWF5IGJlIG5lc3RlZC4gIFRoaXMgY2F1c2VzIG1lc3NhZ2VzIHRvIGJlIGluZGVudGVkIGluIHRoZQogUEVSRiB0YXJnZXQsIGZvciBleGFtcGxlLgotRWxhcHNlZCB0aW1lcyBhcmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBjb3JyZXBzb25kaW5nIG5lc3RpbmcKK0VsYXBzZWQgdGltZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgY29ycmVzcG9uZGluZyBuZXN0aW5nCiBsZXZlbCBhcyBleHBlY3RlZC4gIEZvciBleGFtcGxlLCBpZiB3ZSBhZGQgcmVnaW9uIG1lc3NhZ2UgdG86CiArCiAtLS0tLS0tLS0tLS0tLS0tCkBAIC0xMzcxLDcgKzEzNzEsNyBAQAogSW4gdGhpcyBleGFtcGxlLCB0aGUgcHJlbG9hZCByZWdpb24gdG9vayAwLjAwOTEyMiBzZWNvbmRzLiAgVGhlIDcgdGhyZWFkcwogdG9vayBiZXR3ZWVuIDAuMDA2MDY5IGFuZCAwLjAwODk0NyBzZWNvbmRzIHRvIHdvcmsgb24gdGhlaXIgcG9ydGlvbiBvZgogdGhlIGluZGV4LiAgVGhyZWFkICJ0aDAxIiB3b3JrZWQgb24gNTA4IGl0ZW1zIGF0IG9mZnNldCAwLiAgVGhyZWFkICJ0aDAyIgotd29ya2VkIG9uIDUwOCBpdGVtcyBhdCBvZmZzZXQgMjAzMi4gIFRocmVhZCAidGgwNCIgd29ya2VkIG9uIDUwOCBpdGVtdHMKK3dvcmtlZCBvbiA1MDggaXRlbXMgYXQgb2Zmc2V0IDIwMzIuICBUaHJlYWQgInRoMDQiIHdvcmtlZCBvbiA1MDggaXRlbXMKIGF0IG9mZnNldCA1MDguCiArCiBUaGlzIGV4YW1wbGUgYWxzbyBzaG93cyB0aGF0IHRocmVhZCBuYW1lcyBhcmUgYXNzaWduZWQgaW4gYSByYWN5IG1hbm5lcgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvYXBpLXhkaWZmLWludGVyZmFjZS50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGkteGRpZmYtaW50ZXJmYWNlLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI5NmVjYS4uMDAwMDAwMAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9hcGkteGRpZmYtaW50ZXJmYWNlLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAoteGRpZmYgaW50ZXJmYWNlIEFQSQotPT09PT09PT09PT09PT09PT09PQotCi1UYWxrIGFib3V0IG91ciBjYWxsaW5nIGNvbnZlbnRpb24gdG8geGRpZmYgbGlicmFyeSwgaW5jbHVkaW5nCi14ZGlmZl9lbWl0X2NvbnN1bWVfZm4uCi0KLShEc2NobywgSkMpCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9jb21taXQtZ3JhcGgudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvY29tbWl0LWdyYXBoLnR4dAppbmRleCA3MjlmYmNiLi4xNTA3MTE3IDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9jb21taXQtZ3JhcGgudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2NvbW1pdC1ncmFwaC50eHQKQEAgLTIyLDExICsyMiwxMSBAQAogZGlyZWN0b3J5IG9mIGFuIGFsdGVybmF0ZS4KIAogVGhlIGNvbW1pdC1ncmFwaCBmaWxlIHN0b3JlcyB0aGUgY29tbWl0IGdyYXBoIHN0cnVjdHVyZSBhbG9uZyB3aXRoIHNvbWUKLWV4dHJhIG1ldGFkYXRhIHRvIHNwZWVkIHVwIGdyYXBoIHdhbGtzLiBCeSBsaXN0aW5nIGNvbW1pdCBPSURzIGluIGxleGktCi1jb2dyYXBoaWMgb3JkZXIsIHdlIGNhbiBpZGVudGlmeSBhbiBpbnRlZ2VyIHBvc2l0aW9uIGZvciBlYWNoIGNvbW1pdCBhbmQKLXJlZmVyIHRvIHRoZSBwYXJlbnRzIG9mIGEgY29tbWl0IHVzaW5nIHRob3NlIGludGVnZXIgcG9zaXRpb25zLiBXZSB1c2UKLWJpbmFyeSBzZWFyY2ggdG8gZmluZCBpbml0aWFsIGNvbW1pdHMgYW5kIHRoZW4gdXNlIHRoZSBpbnRlZ2VyIHBvc2l0aW9ucwotZm9yIGZhc3QgbG9va3VwcyBkdXJpbmcgdGhlIHdhbGsuCitleHRyYSBtZXRhZGF0YSB0byBzcGVlZCB1cCBncmFwaCB3YWxrcy4gQnkgbGlzdGluZyBjb21taXQgT0lEcyBpbgorbGV4aWNvZ3JhcGhpYyBvcmRlciwgd2UgY2FuIGlkZW50aWZ5IGFuIGludGVnZXIgcG9zaXRpb24gZm9yIGVhY2ggY29tbWl0CithbmQgcmVmZXIgdG8gdGhlIHBhcmVudHMgb2YgYSBjb21taXQgdXNpbmcgdGhvc2UgaW50ZWdlciBwb3NpdGlvbnMuIFdlCit1c2UgYmluYXJ5IHNlYXJjaCB0byBmaW5kIGluaXRpYWwgY29tbWl0cyBhbmQgdGhlbiB1c2UgdGhlIGludGVnZXIKK3Bvc2l0aW9ucyBmb3IgZmFzdCBsb29rdXBzIGR1cmluZyB0aGUgd2Fsay4KIAogQSBjb25zdW1lciBtYXkgbG9hZCB0aGUgZm9sbG93aW5nIGluZm8gZm9yIGEgY29tbWl0IGZyb20gdGhlIGdyYXBoOgogCkBAIC04NSw3ICs4NSw3IEBACiBTaW5jZSB0aGUgY29tbWl0LWdyYXBoIGZpbGUgaXMgY2xvc2VkIHVuZGVyIHJlYWNoYWJpbGl0eSwgd2UgY2FuIGd1YXJhbnRlZQogdGhlIGZvbGxvd2luZyB3ZWFrZXIgY29uZGl0aW9uIG9uIGFsbCBjb21taXRzOgogCi0gICAgSWYgQSBhbmQgQiBhcmUgY29tbWl0cyB3aXRoIGdlbmVyYXRpb24gbnVtYmVycyBOIGFtZCBNLCByZXNwZWN0aXZlbHksCisgICAgSWYgQSBhbmQgQiBhcmUgY29tbWl0cyB3aXRoIGdlbmVyYXRpb24gbnVtYmVycyBOIGFuZCBNLCByZXNwZWN0aXZlbHksCiAgICAgYW5kIE4gPCBNLCB0aGVuIEEgY2Fubm90IHJlYWNoIEIuCiAKIE5vdGUgaG93IHRoZSBzdHJpY3QgaW5lcXVhbGl0eSBkaWZmZXJzIGZyb20gdGhlIGluZXF1YWxpdHkgd2hlbiB3ZSBoYXZlCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9oYXNoLWZ1bmN0aW9uLXRyYW5zaXRpb24udHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvaGFzaC1mdW5jdGlvbi10cmFuc2l0aW9uLnR4dAppbmRleCAyYWU4ZmE0Li44YTQ1OTZiIDEwMDY0NAotLS0gYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9oYXNoLWZ1bmN0aW9uLXRyYW5zaXRpb24udHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2hhc2gtZnVuY3Rpb24tdHJhbnNpdGlvbi50eHQKQEAgLTUzMSw3ICs1MzEsNyBAQAogb24gcHVibGljLWZhY2luZyBHaXQgc2VydmVycyBpcyBzdHJvbmdseSBkaXNjb3VyYWdlZC4gT25jZSBHaXQKIHByb3RvY29sIGdhaW5zIFNIQS0yNTYgc3VwcG9ydCwgU0hBLTI1NiBiYXNlZCBzZXJ2ZXJzIGFyZSBsaWtlbHkgbm90CiB0byBzdXBwb3J0IFNIQS0xIGNvbXBhdGliaWxpdHksIHRvIGF2b2lkIHdoYXQgbWF5IGJlIGEgdmVyeSBleHBlbnNpdmUKLWhhc2ggcmVlbmNvZGUgZHVyaW5nIGNsb25lIGFuZCB0byBlbmNvdXJhZ2UgcGVlcnMgdG8gbW9kZXJuaXplLgoraGFzaCByZS1lbmNvZGUgZHVyaW5nIGNsb25lIGFuZCB0byBlbmNvdXJhZ2UgcGVlcnMgdG8gbW9kZXJuaXplLgogCiBUaGUgZGVzaWduIGRlc2NyaWJlZCBoZXJlIGFsbG93cyBmZXRjaGVzIGJ5IFNIQS0xIGNsaWVudHMgb2YgYQogcGVyc29uYWwgU0hBLTI1NiByZXBvc2l0b3J5IGJlY2F1c2UgaXQncyBub3QgbXVjaCBtb3JlIGRpZmZpY3VsdCB0aGFuCkBAIC02MDIsNyArNjAyLDcgQEAKIAogQ2hvaWNlIG9mIEhhc2gKIC0tLS0tLS0tLS0tLS0tCi1JbiBlYXJseSAyMDA1LCBhcm91bmQgdGhlIHRpbWUgdGhhdCBHaXQgd2FzIHdyaXR0ZW4sICBYaWFveXVuIFdhbmcsCitJbiBlYXJseSAyMDA1LCBhcm91bmQgdGhlIHRpbWUgdGhhdCBHaXQgd2FzIHdyaXR0ZW4sIFhpYW95dW4gV2FuZywKIFlpcXVuIExpc2EgWWluLCBhbmQgSG9uZ2JvIFl1IGFubm91bmNlZCBhbiBhdHRhY2sgZmluZGluZyBTSEEtMQogY29sbGlzaW9ucyBpbiAyXjY5IG9wZXJhdGlvbnMuIEluIEF1Z3VzdCB0aGV5IHB1Ymxpc2hlZCBkZXRhaWxzLgogTHVja2lseSwgbm8gcHJhY3RpY2FsIGRlbW9uc3RyYXRpb25zIG9mIGEgY29sbGlzaW9uIGluIGZ1bGwgU0hBLTEgd2VyZQpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvaW5kZXgtZm9ybWF0LnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL2luZGV4LWZvcm1hdC50eHQKaW5kZXggN2M0ZDY3YS4uZmFhMjVjNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvaW5kZXgtZm9ybWF0LnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9pbmRleC1mb3JtYXQudHh0CkBAIC0zMTgsNyArMzE4LDcgQEAKID09IEVuZCBvZiBJbmRleCBFbnRyeQogCiAgIFRoZSBFbmQgb2YgSW5kZXggRW50cnkgKEVPSUUpIGlzIHVzZWQgdG8gbG9jYXRlIHRoZSBlbmQgb2YgdGhlIHZhcmlhYmxlCi0gIGxlbmd0aCBpbmRleCBlbnRyaWVzIGFuZCB0aGUgYmVnaW5pbmcgb2YgdGhlIGV4dGVuc2lvbnMuIENvZGUgY2FuIHRha2UKKyAgbGVuZ3RoIGluZGV4IGVudHJpZXMgYW5kIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGV4dGVuc2lvbnMuIENvZGUgY2FuIHRha2UKICAgYWR2YW50YWdlIG9mIHRoaXMgdG8gcXVpY2tseSBsb2NhdGUgdGhlIGluZGV4IGV4dGVuc2lvbnMgd2l0aG91dCBoYXZpbmcKICAgdG8gcGFyc2UgdGhyb3VnaCBhbGwgb2YgdGhlIGluZGV4IGVudHJpZXMuCiAKQEAgLTM1MSw3ICszNTEsNyBAQAogCiAgIC0gQSBudW1iZXIgb2YgaW5kZXggb2Zmc2V0IGVudHJpZXMgZWFjaCBjb25zaXN0aW5nIG9mOgogCi0gICAgLSAzMi1iaXQgb2Zmc2V0IGZyb20gdGhlIGJlZ2luaW5nIG9mIHRoZSBmaWxlIHRvIHRoZSBmaXJzdCBjYWNoZSBlbnRyeQorICAgIC0gMzItYml0IG9mZnNldCBmcm9tIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUgdG8gdGhlIGZpcnN0IGNhY2hlIGVudHJ5CiAJaW4gdGhpcyBibG9jayBvZiBlbnRyaWVzLgogCiAgICAgLSAzMi1iaXQgY291bnQgb2YgY2FjaGUgZW50cmllcyBpbiB0aGlzIGJsb2NrCmRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wYWNrLXByb3RvY29sLnR4dCBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhY2stcHJvdG9jb2wudHh0CmluZGV4IGM3M2U3MmQuLmQ1Y2U0ZWUgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhY2stcHJvdG9jb2wudHh0CisrKyBiL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhY2stcHJvdG9jb2wudHh0CkBAIC02NDQsNyArNjQ0LDcgQEAKICAgY29tbWFuZC1vayAgICAgICAgPSBQS1QtTElORSgib2siIFNQIHJlZm5hbWUpCiAgIGNvbW1hbmQtZmFpbCAgICAgID0gUEtULUxJTkUoIm5nIiBTUCByZWZuYW1lIFNQIGVycm9yLW1zZykKIAotICBlcnJvci1tc2cgICAgICAgICA9IDEqKE9DVEVDVCkgOyB3aGVyZSBub3QgIm9rIgorICBlcnJvci1tc2cgICAgICAgICA9IDEqKE9DVEVUKSA7IHdoZXJlIG5vdCAib2siCiAtLS0tCiAKIFVwZGF0ZXMgY2FuIGJlIHVuc3VjY2Vzc2Z1bCBmb3IgYSBudW1iZXIgb2YgcmVhc29ucy4gIFRoZSByZWZlcmVuY2UgY2FuIGhhdmUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3BhcnRpYWwtY2xvbmUudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFydGlhbC1jbG9uZS50eHQKaW5kZXggMjEwMzczZS4uYTYwMzRkNSAxMDA2NDQKLS0tIGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFydGlhbC1jbG9uZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcGFydGlhbC1jbG9uZS50eHQKQEAgLTMyLDcgKzMyLDcgQEAKIAogQSByZW1vdGUgdGhhdCBjYW4gbGF0ZXIgcHJvdmlkZSB0aGUgbWlzc2luZyBvYmplY3RzIGlzIGNhbGxlZCBhCiBwcm9taXNvciByZW1vdGUsIGFzIGl0IHByb21pc2VzIHRvIHNlbmQgdGhlIG9iamVjdHMgd2hlbgotcmVxdWVzdGVkLiBJbml0aWFseSBHaXQgc3VwcG9ydGVkIG9ubHkgb25lIHByb21pc29yIHJlbW90ZSwgdGhlIG9yaWdpbgorcmVxdWVzdGVkLiBJbml0aWFsbHkgR2l0IHN1cHBvcnRlZCBvbmx5IG9uZSBwcm9taXNvciByZW1vdGUsIHRoZSBvcmlnaW4KIHJlbW90ZSBmcm9tIHdoaWNoIHRoZSB1c2VyIGNsb25lZCBhbmQgdGhhdCB3YXMgY29uZmlndXJlZCBpbiB0aGUKICJleHRlbnNpb25zLnBhcnRpYWxDbG9uZSIgY29uZmlnIG9wdGlvbi4gTGF0ZXIgc3VwcG9ydCBmb3IgbW9yZSB0aGFuCiBvbmUgcHJvbWlzb3IgcmVtb3RlIGhhcyBiZWVuIGltcGxlbWVudGVkLgpkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcHJvdG9jb2wtdjIudHh0IGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcHJvdG9jb2wtdjIudHh0CmluZGV4IDQwZjkxZjYuLjdlMzc2NmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3Byb3RvY29sLXYyLnR4dAorKysgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9wcm90b2NvbC12Mi50eHQKQEAgLTI1Miw3ICsyNTIsNyBAQAogICAgIG9mcy1kZWx0YQogCUluZGljYXRlIHRoYXQgdGhlIGNsaWVudCB1bmRlcnN0YW5kcyBQQUNLdjIgd2l0aCBkZWx0YSByZWZlcnJpbmcKIAl0byBpdHMgYmFzZSBieSBwb3NpdGlvbiBpbiBwYWNrIHJhdGhlciB0aGFuIGJ5IGFuIG9pZC4gIFRoYXQgaXMsCi0JdGhleSBjYW4gcmVhZCBPQkpfT0ZTX0RFTFRBIChha2UgdHlwZSA2KSBpbiBhIHBhY2tmaWxlLgorCXRoZXkgY2FuIHJlYWQgT0JKX09GU19ERUxUQSAoYWthIHR5cGUgNikgaW4gYSBwYWNrZmlsZS4KIAogSWYgdGhlICdzaGFsbG93JyBmZWF0dXJlIGlzIGFkdmVydGlzZWQgdGhlIGZvbGxvd2luZyBhcmd1bWVudHMgY2FuIGJlCiBpbmNsdWRlZCBpbiB0aGUgY2xpZW50cyByZXF1ZXN0IGFzIHdlbGwgYXMgdGhlIHBvdGVudGlhbCBhZGRpdGlvbiBvZiB0aGUKZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3JlcmVyZS50eHQgYi9Eb2N1bWVudGF0aW9uL3RlY2huaWNhbC9yZXJlcmUudHh0CmluZGV4IGFhMjJkN2EuLmFmNWY5ZmMgMTAwNjQ0Ci0tLSBhL0RvY3VtZW50YXRpb24vdGVjaG5pY2FsL3JlcmVyZS50eHQKKysrIGIvRG9jdW1lbnRhdGlvbi90ZWNobmljYWwvcmVyZXJlLnR4dApAQCAtMTE3LDcgKzExNyw3IEBACiA0IGNvbWJpbmF0aW9ucyBvZiAoIkIgb3IgQyIsICJDIG9yIEIiKSB4ICgiWCBvciBZIiwgIlkgb3IgWCIpLgogCiBCeSBzb3J0aW5nLCB0aGUgY29uZmxpY3QgaXMgZ2l2ZW4gaXRzIGNhbm9uaWNhbCBuYW1lLCBuYW1lbHksICJhbgotZWFybHkgcGFydCBiZWNhbWUgQiBvciBDLCBhIGxhdGUgcGFydCBiZWNhbWVzIFggb3IgWSIsIGFuZCB3aGVuZXZlcgorZWFybHkgcGFydCBiZWNhbWUgQiBvciBDLCBhIGxhdGUgcGFydCBiZWNhbWUgWCBvciBZIiwgYW5kIHdoZW5ldmVyCiBhbnkgb2YgdGhlc2UgZm91ciBwYXR0ZXJucyBhcHBlYXIsIGFuZCB3ZSBjYW4gZ2V0IHRvIHRoZSBzYW1lIGNvbmZsaWN0CiBhbmQgcmVzb2x1dGlvbiB0aGF0IHdlIHNhdyBlYXJsaWVyLgogCmRpZmYgLS1naXQgYS9HSVQtVkVSU0lPTi1HRU4gYi9HSVQtVkVSU0lPTi1HRU4KaW5kZXggMzFkNmRmNS4uMjJlOGQ4MyAxMDA3NTUKLS0tIGEvR0lULVZFUlNJT04tR0VOCisrKyBiL0dJVC1WRVJTSU9OLUdFTgpAQCAtMSw3ICsxLDcgQEAKICMhL2Jpbi9zaAogCiBHVkY9R0lULVZFUlNJT04tRklMRQotREVGX1ZFUj12Mi4yNC4wLXJjMQorREVGX1ZFUj12Mi4yNC5HSVQKIAogTEY9JwogJwpkaWZmIC0tZ2l0IGEvSU5TVEFMTCBiL0lOU1RBTEwKaW5kZXggYzM5MDA2ZS4uZTdmZjBhOCAxMDA2NDQKLS0tIGEvSU5TVEFMTAorKysgYi9JTlNUQUxMCkBAIC0xMDksNyArMTA5LDcgQEAKIAogIC0gR2l0IGlzIHJlYXNvbmFibHkgc2VsZi1zdWZmaWNpZW50LCBidXQgZG9lcyBkZXBlbmQgb24gYSBmZXcgZXh0ZXJuYWwKICAgIHByb2dyYW1zIGFuZCBsaWJyYXJpZXMuICBHaXQgY2FuIGJlIHVzZWQgd2l0aG91dCBtb3N0IG9mIHRoZW0gYnkgYWRkaW5nCi0gICB0aGUgYXBwcm9yaWF0ZSAiTk9fPExJQlJBUlk+PVllc1BsZWFzZSIgdG8gdGhlIG1ha2UgY29tbWFuZCBsaW5lIG9yCisgICB0aGUgYXBwcm9wcmlhdGUgIk5PXzxMSUJSQVJZPj1ZZXNQbGVhc2UiIHRvIHRoZSBtYWtlIGNvbW1hbmQgbGluZSBvcgogICAgY29uZmlnLm1hayBmaWxlLgogCiAJLSAiemxpYiIsIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5LiBHaXQgd29uJ3QgYnVpbGQgd2l0aG91dCBpdC4KZGlmZiAtLWdpdCBhL1JlbE5vdGVzIGIvUmVsTm90ZXMKaW5kZXggZmM2NTdlNy4uMDkxZGQwMiAxMjAwMDAKLS0tIGEvUmVsTm90ZXMKKysrIGIvUmVsTm90ZXMKQEAgLTEgKzEgQEAKLURvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4yNC4wLnR4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0RvY3VtZW50YXRpb24vUmVsTm90ZXMvMi4yNS4wLnR4dApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2FwcGx5LmMgYi9hcHBseS5jCmluZGV4IGY4YTA0NmEuLmQ1N2FjMGQgMTAwNjQ0Ci0tLSBhL2FwcGx5LmMKKysrIGIvYXBwbHkuYwpAQCAtMzIsNyArMzIsNyBAQAogewogCWdpdF9jb25maWdfZ2V0X3N0cmluZ19jb25zdCgiYXBwbHkud2hpdGVzcGFjZSIsICZhcHBseV9kZWZhdWx0X3doaXRlc3BhY2UpOwogCWdpdF9jb25maWdfZ2V0X3N0cmluZ19jb25zdCgiYXBwbHkuaWdub3Jld2hpdGVzcGFjZSIsICZhcHBseV9kZWZhdWx0X2lnbm9yZXdoaXRlc3BhY2UpOwotCWdpdF9jb25maWcoZ2l0X2RlZmF1bHRfY29uZmlnLCBOVUxMKTsKKwlnaXRfY29uZmlnKGdpdF94bWVyZ2VfY29uZmlnLCBOVUxMKTsKIH0KIAogc3RhdGljIGludCBwYXJzZV93aGl0ZXNwYWNlX29wdGlvbihzdHJ1Y3QgYXBwbHlfc3RhdGUgKnN0YXRlLCBjb25zdCBjaGFyICpvcHRpb24pCkBAIC00MTgzLDggKzQxODMsOCBAQAogCQlvbGRfbmFtZSA9IHNsYXNoX29sZCArIDE7CiAJCW5ld19uYW1lID0gc2xhc2hfbmV3ICsgMTsKIAl9Ci0JLyogcC0+b2xkX25hbWUgdGhydSBvbGRfbmFtZSBpcyB0aGUgY29tbW9uIHByZWZpeCwgYW5kIG9sZF9uYW1lIGFuZCBuZXdfbmFtZQotCSAqIHRocm91Z2ggdGhlIGVuZCBvZiBuYW1lcyBhcmUgcmVuYW1lcworCS8qIHAtPm9sZF9uYW1lIHRocm91Z2ggb2xkX25hbWUgaXMgdGhlIGNvbW1vbiBwcmVmaXgsIGFuZCBvbGRfbmFtZSBhbmQKKwkgKiBuZXdfbmFtZSB0aHJvdWdoIHRoZSBlbmQgb2YgbmFtZXMgYXJlIHJlbmFtZXMKIAkgKi8KIAlpZiAob2xkX25hbWUgIT0gcC0+b2xkX25hbWUpCiAJCXByaW50ZigiICVzICUuKnN7JXMgPT4gJXN9ICglZCUlKVxuIiwgcmVuYW1lY29weSwKZGlmZiAtLWdpdCBhL2J1aWx0aW4vYmxhbWUuYyBiL2J1aWx0aW4vYmxhbWUuYwppbmRleCBlOTQ2YmE2Li5iZjFjZWNkIDEwMDY0NAotLS0gYS9idWlsdGluL2JsYW1lLmMKKysrIGIvYnVpbHRpbi9ibGFtZS5jCkBAIC0zMTksMTggKzMxOSwxOCBAQAogCXJldHVybiB0aW1lX2J1Zi5idWY7CiB9CiAKLSNkZWZpbmUgT1VUUFVUX0FOTk9UQVRFX0NPTVBBVAkwMDEKLSNkZWZpbmUgT1VUUFVUX0xPTkdfT0JKRUNUX05BTUUJMDAyCi0jZGVmaW5lIE9VVFBVVF9SQVdfVElNRVNUQU1QCTAwNAotI2RlZmluZSBPVVRQVVRfUE9SQ0VMQUlOCTAxMAotI2RlZmluZSBPVVRQVVRfU0hPV19OQU1FCTAyMAotI2RlZmluZSBPVVRQVVRfU0hPV19OVU1CRVIJMDQwCi0jZGVmaW5lIE9VVFBVVF9TSE9XX1NDT1JFCTAxMDAKLSNkZWZpbmUgT1VUUFVUX05PX0FVVEhPUgkwMjAwCi0jZGVmaW5lIE9VVFBVVF9TSE9XX0VNQUlMCTA0MDAKLSNkZWZpbmUgT1VUUFVUX0xJTkVfUE9SQ0VMQUlOCTAxMDAwCi0jZGVmaW5lIE9VVFBVVF9DT0xPUl9MSU5FCTAyMDAwCi0jZGVmaW5lIE9VVFBVVF9TSE9XX0FHRV9XSVRIX0NPTE9SCTA0MDAwCisjZGVmaW5lIE9VVFBVVF9BTk5PVEFURV9DT01QQVQgICAgICAoMVU8PDApCisjZGVmaW5lIE9VVFBVVF9MT05HX09CSkVDVF9OQU1FICAgICAoMVU8PDEpCisjZGVmaW5lIE9VVFBVVF9SQVdfVElNRVNUQU1QICAgICAgICAoMVU8PDIpCisjZGVmaW5lIE9VVFBVVF9QT1JDRUxBSU4gICAgICAgICAgICAoMVU8PDMpCisjZGVmaW5lIE9VVFBVVF9TSE9XX05BTUUgICAgICAgICAgICAoMVU8PDQpCisjZGVmaW5lIE9VVFBVVF9TSE9XX05VTUJFUiAgICAgICAgICAoMVU8PDUpCisjZGVmaW5lIE9VVFBVVF9TSE9XX1NDT1JFICAgICAgICAgICAoMVU8PDYpCisjZGVmaW5lIE9VVFBVVF9OT19BVVRIT1IgICAgICAgICAgICAoMVU8PDcpCisjZGVmaW5lIE9VVFBVVF9TSE9XX0VNQUlMICAgICAgICAgICAoMVU8PDgpCisjZGVmaW5lIE9VVFBVVF9MSU5FX1BPUkNFTEFJTiAgICAgICAoMVU8PDkpCisjZGVmaW5lIE9VVFBVVF9DT0xPUl9MSU5FICAgICAgICAgICAoMVU8PDEwKQorI2RlZmluZSBPVVRQVVRfU0hPV19BR0VfV0lUSF9DT0xPUiAgKDFVPDwxMSkKIAogc3RhdGljIHZvaWQgZW1pdF9wb3JjZWxhaW5fZGV0YWlscyhzdHJ1Y3QgYmxhbWVfb3JpZ2luICpzdXNwZWN0LCBpbnQgcmVwZWF0KQogewpAQCAtODYxLDE0ICs4NjEsNiBAQAogCQlPUFRfU1RSSU5HX0xJU1QoMCwgImlnbm9yZS1yZXZzLWZpbGUiLCAmaWdub3JlX3JldnNfZmlsZV9saXN0LCBOXygiZmlsZSIpLCBOXygiSWdub3JlIHJldmlzaW9ucyBmcm9tIDxmaWxlPiIpKSwKIAkJT1BUX0JJVCgwLCAiY29sb3ItbGluZXMiLCAmb3V0cHV0X29wdGlvbiwgTl8oImNvbG9yIHJlZHVuZGFudCBtZXRhZGF0YSBmcm9tIHByZXZpb3VzIGxpbmUgZGlmZmVyZW50bHkiKSwgT1VUUFVUX0NPTE9SX0xJTkUpLAogCQlPUFRfQklUKDAsICJjb2xvci1ieS1hZ2UiLCAmb3V0cHV0X29wdGlvbiwgTl8oImNvbG9yIGxpbmVzIGJ5IGFnZSIpLCBPVVRQVVRfU0hPV19BR0VfV0lUSF9DT0xPUiksCi0KLQkJLyoKLQkJICogVGhlIGZvbGxvd2luZyB0d28gb3B0aW9ucyBhcmUgcGFyc2VkIGJ5IHBhcnNlX3JldmlzaW9uX29wdCgpCi0JCSAqIGFuZCBhcmUgb25seSBpbmNsdWRlZCBoZXJlIHRvIGdldCBpbmNsdWRlZCBpbiB0aGUgIi1oIgotCQkgKiBvdXRwdXQ6Ci0JCSAqLwotCQl7IE9QVElPTl9MT1dMRVZFTF9DQUxMQkFDSywgMCwgImluZGVudC1oZXVyaXN0aWMiLCBOVUxMLCBOVUxMLCBOXygiVXNlIGFuIGV4cGVyaW1lbnRhbCBoZXVyaXN0aWMgdG8gaW1wcm92ZSBkaWZmcyIpLCBQQVJTRV9PUFRfTk9BUkcsIE5VTEwsIDAsIHBhcnNlX29wdF91bmtub3duX2NiIH0sCi0KIAkJT1BUX0JJVCgwLCAibWluaW1hbCIsICZ4ZGxfb3B0cywgTl8oIlNwZW5kIGV4dHJhIGN5Y2xlcyB0byBmaW5kIGJldHRlciBtYXRjaCIpLCBYREZfTkVFRF9NSU5JTUFMKSwKIAkJT1BUX1NUUklORygnUycsIE5VTEwsICZyZXZzX2ZpbGUsIE5fKCJmaWxlIiksIE5fKCJVc2UgcmV2aXNpb25zIGZyb20gPGZpbGU+IGluc3RlYWQgb2YgY2FsbGluZyBnaXQtcmV2LWxpc3QiKSksCiAJCU9QVF9TVFJJTkcoMCwgImNvbnRlbnRzIiwgJmNvbnRlbnRzX2Zyb20sIE5fKCJmaWxlIiksIE5fKCJVc2UgPGZpbGU+J3MgY29udGVudHMgYXMgdGhlIGZpbmFsIGltYWdlIikpLApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9idW5kbGUuYyBiL2J1aWx0aW4vYnVuZGxlLmMKaW5kZXggMWVhNGJmZC4uZjA0OWQyNyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9idW5kbGUuYworKysgYi9idWlsdGluL2J1bmRsZS5jCkBAIC0xLDQgKzEsNiBAQAogI2luY2x1ZGUgImJ1aWx0aW4uaCIKKyNpbmNsdWRlICJhcmd2LWFycmF5LmgiCisjaW5jbHVkZSAicGFyc2Utb3B0aW9ucy5oIgogI2luY2x1ZGUgImNhY2hlLmgiCiAjaW5jbHVkZSAiYnVuZGxlLmgiCiAKQEAgLTksNTkgKzExLDE4NCBAQAogICogYnVuZGxlIHN1cHBvcnRpbmcgImZldGNoIiwgInB1bGwiLCBhbmQgImxzLXJlbW90ZSIuCiAgKi8KIAotc3RhdGljIGNvbnN0IGNoYXIgYnVpbHRpbl9idW5kbGVfdXNhZ2VbXSA9Ci0gICJnaXQgYnVuZGxlIGNyZWF0ZSA8ZmlsZT4gPGdpdC1yZXYtbGlzdCBhcmdzPlxuIgotICAiICAgb3I6IGdpdCBidW5kbGUgdmVyaWZ5IDxmaWxlPlxuIgotICAiICAgb3I6IGdpdCBidW5kbGUgbGlzdC1oZWFkcyA8ZmlsZT4gWzxyZWZuYW1lPi4uLl1cbiIKLSAgIiAgIG9yOiBnaXQgYnVuZGxlIHVuYnVuZGxlIDxmaWxlPiBbPHJlZm5hbWU+Li4uXSI7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fYnVuZGxlX3VzYWdlW10gPSB7CisgIE5fKCJnaXQgYnVuZGxlIGNyZWF0ZSBbPG9wdGlvbnM+XSA8ZmlsZT4gPGdpdC1yZXYtbGlzdCBhcmdzPiIpLAorICBOXygiZ2l0IGJ1bmRsZSB2ZXJpZnkgWzxvcHRpb25zPl0gPGZpbGU+IiksCisgIE5fKCJnaXQgYnVuZGxlIGxpc3QtaGVhZHMgPGZpbGU+IFs8cmVmbmFtZT4uLi5dIiksCisgIE5fKCJnaXQgYnVuZGxlIHVuYnVuZGxlIDxmaWxlPiBbPHJlZm5hbWU+Li4uXSIpLAorICBOVUxMCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fYnVuZGxlX2NyZWF0ZV91c2FnZVtdID0geworICBOXygiZ2l0IGJ1bmRsZSBjcmVhdGUgWzxvcHRpb25zPl0gPGZpbGU+IDxnaXQtcmV2LWxpc3QgYXJncz4iKSwKKyAgTlVMTAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX2J1bmRsZV92ZXJpZnlfdXNhZ2VbXSA9IHsKKyAgTl8oImdpdCBidW5kbGUgdmVyaWZ5IFs8b3B0aW9ucz5dIDxmaWxlPiIpLAorICBOVUxMCit9OworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGJ1aWx0aW5fYnVuZGxlX2xpc3RfaGVhZHNfdXNhZ2VbXSA9IHsKKyAgTl8oImdpdCBidW5kbGUgbGlzdC1oZWFkcyA8ZmlsZT4gWzxyZWZuYW1lPi4uLl0iKSwKKyAgTlVMTAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBidWlsdGluX2J1bmRsZV91bmJ1bmRsZV91c2FnZVtdID0geworICBOXygiZ2l0IGJ1bmRsZSB1bmJ1bmRsZSA8ZmlsZT4gWzxyZWZuYW1lPi4uLl0iKSwKKyAgTlVMTAorfTsKKworc3RhdGljIGludCB2ZXJib3NlOworCitzdGF0aWMgaW50IHBhcnNlX29wdGlvbnNfY21kX2J1bmRsZShpbnQgYXJnYywKKwkJY29uc3QgY2hhciAqKmFyZ3YsCisJCWNvbnN0IGNoYXIqIHByZWZpeCwKKwkJY29uc3QgY2hhciAqIGNvbnN0IHVzYWdlc3RyW10sCisJCWNvbnN0IHN0cnVjdCBvcHRpb24gb3B0aW9uc1tdLAorCQljb25zdCBjaGFyICoqYnVuZGxlX2ZpbGUpIHsKKwlpbnQgbmV3YXJnYzsKKwluZXdhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBOVUxMLCBvcHRpb25zLCB1c2FnZXN0ciwKKwkJCSAgICAgUEFSU0VfT1BUX1NUT1BfQVRfTk9OX09QVElPTik7CisJaWYgKGFyZ2MgPCAxKQorCQl1c2FnZV93aXRoX29wdGlvbnModXNhZ2VzdHIsIG9wdGlvbnMpOworCSpidW5kbGVfZmlsZSA9IHByZWZpeF9maWxlbmFtZShwcmVmaXgsIGFyZ3ZbMF0pOworCXJldHVybiBuZXdhcmdjOworfQorCitzdGF0aWMgaW50IGNtZF9idW5kbGVfY3JlYXRlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KSB7CisJaW50IGFsbF9wcm9ncmVzc19pbXBsaWVkID0gMDsKKwlpbnQgcHJvZ3Jlc3MgPSBpc2F0dHkoU1RERVJSX0ZJTEVOTyk7CisJc3RydWN0IGFyZ3ZfYXJyYXkgcGFja19vcHRzOworCisJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CisJCU9QVF9TRVRfSU5UKCdxJywgInF1aWV0IiwgJnByb2dyZXNzLAorCQkJICAgIE5fKCJkbyBub3Qgc2hvdyBwcm9ncmVzcyBtZXRlciIpLCAwKSwKKwkJT1BUX1NFVF9JTlQoMCwgInByb2dyZXNzIiwgJnByb2dyZXNzLAorCQkJICAgIE5fKCJzaG93IHByb2dyZXNzIG1ldGVyIiksIDEpLAorCQlPUFRfU0VUX0lOVCgwLCAiYWxsLXByb2dyZXNzIiwgJnByb2dyZXNzLAorCQkJICAgIE5fKCJzaG93IHByb2dyZXNzIG1ldGVyIGR1cmluZyBvYmplY3Qgd3JpdGluZyBwaGFzZSIpLCAyKSwKKwkJT1BUX0JPT0woMCwgImFsbC1wcm9ncmVzcy1pbXBsaWVkIiwKKwkJCSAmYWxsX3Byb2dyZXNzX2ltcGxpZWQsCisJCQkgTl8oInNpbWlsYXIgdG8gLS1hbGwtcHJvZ3Jlc3Mgd2hlbiBwcm9ncmVzcyBtZXRlciBpcyBzaG93biIpKSwKKwkJT1BUX0VORCgpCisJfTsKKwljb25zdCBjaGFyKiBidW5kbGVfZmlsZTsKKworCWFyZ2MgPSBwYXJzZV9vcHRpb25zX2NtZF9idW5kbGUoYXJnYywgYXJndiwgcHJlZml4LAorCQkJYnVpbHRpbl9idW5kbGVfY3JlYXRlX3VzYWdlLCBvcHRpb25zLCAmYnVuZGxlX2ZpbGUpOworCS8qIGJ1bmRsZSBpbnRlcm5hbHMgdXNlIGFyZ3ZbMV0gYXMgZnVydGhlciBwYXJhbWV0ZXJzICovCisKKwlhcmd2X2FycmF5X2luaXQoJnBhY2tfb3B0cyk7CisJaWYgKHByb2dyZXNzID09IDApCisJCWFyZ3ZfYXJyYXlfcHVzaCgmcGFja19vcHRzLCAiLS1xdWlldCIpOworCWVsc2UgaWYgKHByb2dyZXNzID09IDEpCisJCWFyZ3ZfYXJyYXlfcHVzaCgmcGFja19vcHRzLCAiLS1wcm9ncmVzcyIpOworCWVsc2UgaWYgKHByb2dyZXNzID09IDIpCisJCWFyZ3ZfYXJyYXlfcHVzaCgmcGFja19vcHRzLCAiLS1hbGwtcHJvZ3Jlc3MiKTsKKwlpZiAocHJvZ3Jlc3MgJiYgYWxsX3Byb2dyZXNzX2ltcGxpZWQpCisJCWFyZ3ZfYXJyYXlfcHVzaCgmcGFja19vcHRzLCAiLS1hbGwtcHJvZ3Jlc3MtaW1wbGllZCIpOworCisJaWYgKCFzdGFydHVwX2luZm8tPmhhdmVfcmVwb3NpdG9yeSkKKwkJZGllKF8oIk5lZWQgYSByZXBvc2l0b3J5IHRvIGNyZWF0ZSBhIGJ1bmRsZS4iKSk7CisJcmV0dXJuICEhY3JlYXRlX2J1bmRsZSh0aGVfcmVwb3NpdG9yeSwgYnVuZGxlX2ZpbGUsIGFyZ2MsIGFyZ3YsICZwYWNrX29wdHMpOworfQorCitzdGF0aWMgaW50IGNtZF9idW5kbGVfdmVyaWZ5KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KSB7CisJc3RydWN0IGJ1bmRsZV9oZWFkZXIgaGVhZGVyOworCWludCBidW5kbGVfZmQgPSAtMTsKKwlpbnQgcXVpZXQgPSAwOworCisJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CisJCU9QVF9CT09MKCdxJywgInF1aWV0IiwgJnF1aWV0LAorCQkJICAgIE5fKCJkbyBub3Qgc2hvdyBidW5kbGUgZGV0YWlscyIpKSwKKwkJT1BUX0VORCgpCisJfTsKKwljb25zdCBjaGFyKiBidW5kbGVfZmlsZTsKKworCWFyZ2MgPSBwYXJzZV9vcHRpb25zX2NtZF9idW5kbGUoYXJnYywgYXJndiwgcHJlZml4LAorCQkJYnVpbHRpbl9idW5kbGVfdmVyaWZ5X3VzYWdlLCBvcHRpb25zLCAmYnVuZGxlX2ZpbGUpOworCS8qIGJ1bmRsZSBpbnRlcm5hbHMgdXNlIGFyZ3ZbMV0gYXMgZnVydGhlciBwYXJhbWV0ZXJzICovCisKKwltZW1zZXQoJmhlYWRlciwgMCwgc2l6ZW9mKGhlYWRlcikpOworCWlmICgoYnVuZGxlX2ZkID0gcmVhZF9idW5kbGVfaGVhZGVyKGJ1bmRsZV9maWxlLCAmaGVhZGVyKSkgPCAwKQorCQlyZXR1cm4gMTsKKwljbG9zZShidW5kbGVfZmQpOworCWlmICh2ZXJpZnlfYnVuZGxlKHRoZV9yZXBvc2l0b3J5LCAmaGVhZGVyLCAhcXVpZXQpKQorCQlyZXR1cm4gMTsKKwlmcHJpbnRmKHN0ZGVyciwgXygiJXMgaXMgb2theVxuIiksIGJ1bmRsZV9maWxlKTsKKwlyZXR1cm4gMDsKK30KKworc3RhdGljIGludCBjbWRfYnVuZGxlX2xpc3RfaGVhZHMoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpIHsKKwlzdHJ1Y3QgYnVuZGxlX2hlYWRlciBoZWFkZXI7CisJaW50IGJ1bmRsZV9mZCA9IC0xOworCisJc3RydWN0IG9wdGlvbiBvcHRpb25zW10gPSB7CisJCU9QVF9FTkQoKQorCX07CisJY29uc3QgY2hhciogYnVuZGxlX2ZpbGU7CisKKwlhcmdjID0gcGFyc2Vfb3B0aW9uc19jbWRfYnVuZGxlKGFyZ2MsIGFyZ3YsIHByZWZpeCwKKwkJCWJ1aWx0aW5fYnVuZGxlX2xpc3RfaGVhZHNfdXNhZ2UsIG9wdGlvbnMsICZidW5kbGVfZmlsZSk7CisJLyogYnVuZGxlIGludGVybmFscyB1c2UgYXJndlsxXSBhcyBmdXJ0aGVyIHBhcmFtZXRlcnMgKi8KKworCW1lbXNldCgmaGVhZGVyLCAwLCBzaXplb2YoaGVhZGVyKSk7CisJaWYgKChidW5kbGVfZmQgPSByZWFkX2J1bmRsZV9oZWFkZXIoYnVuZGxlX2ZpbGUsICZoZWFkZXIpKSA8IDApCisJCXJldHVybiAxOworCWNsb3NlKGJ1bmRsZV9mZCk7CisJcmV0dXJuICEhbGlzdF9idW5kbGVfcmVmcygmaGVhZGVyLCBhcmdjLCBhcmd2KTsKK30KKworc3RhdGljIGludCBjbWRfYnVuZGxlX3VuYnVuZGxlKGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqcHJlZml4KSB7CisJc3RydWN0IGJ1bmRsZV9oZWFkZXIgaGVhZGVyOworCWludCBidW5kbGVfZmQgPSAtMTsKKworCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geworCQlPUFRfRU5EKCkKKwl9OworCWNvbnN0IGNoYXIqIGJ1bmRsZV9maWxlOworCisJYXJnYyA9IHBhcnNlX29wdGlvbnNfY21kX2J1bmRsZShhcmdjLCBhcmd2LCBwcmVmaXgsCisJCQlidWlsdGluX2J1bmRsZV91bmJ1bmRsZV91c2FnZSwgb3B0aW9ucywgJmJ1bmRsZV9maWxlKTsKKwkvKiBidW5kbGUgaW50ZXJuYWxzIHVzZSBhcmd2WzFdIGFzIGZ1cnRoZXIgcGFyYW1ldGVycyAqLworCisJbWVtc2V0KCZoZWFkZXIsIDAsIHNpemVvZihoZWFkZXIpKTsKKwlpZiAoKGJ1bmRsZV9mZCA9IHJlYWRfYnVuZGxlX2hlYWRlcihidW5kbGVfZmlsZSwgJmhlYWRlcikpIDwgMCkKKwkJcmV0dXJuIDE7CisJaWYgKCFzdGFydHVwX2luZm8tPmhhdmVfcmVwb3NpdG9yeSkKKwkJZGllKF8oIk5lZWQgYSByZXBvc2l0b3J5IHRvIHVuYnVuZGxlLiIpKTsKKwlyZXR1cm4gISF1bmJ1bmRsZSh0aGVfcmVwb3NpdG9yeSwgJmhlYWRlciwgYnVuZGxlX2ZkLCAwKSB8fAorCQlsaXN0X2J1bmRsZV9yZWZzKCZoZWFkZXIsIGFyZ2MsIGFyZ3YpOworfQogCiBpbnQgY21kX2J1bmRsZShpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKnByZWZpeCkKIHsKLQlzdHJ1Y3QgYnVuZGxlX2hlYWRlciBoZWFkZXI7Ci0JY29uc3QgY2hhciAqY21kLCAqYnVuZGxlX2ZpbGU7Ci0JaW50IGJ1bmRsZV9mZCA9IC0xOworCXN0cnVjdCBvcHRpb24gb3B0aW9uc1tdID0geworCQlPUFRfX1ZFUkJPU0UoJnZlcmJvc2UsIE5fKCJiZSB2ZXJib3NlOyBtdXN0IGJlIHBsYWNlZCBiZWZvcmUgYSBzdWJjb21tYW5kIikpLAorCQlPUFRfRU5EKCkKKwl9OworCWludCByZXN1bHQ7CiAKLQlpZiAoYXJnYyA8IDMpCi0JCXVzYWdlKGJ1aWx0aW5fYnVuZGxlX3VzYWdlKTsKKwlhcmdjID0gcGFyc2Vfb3B0aW9ucyhhcmdjLCBhcmd2LCBwcmVmaXgsIG9wdGlvbnMsIGJ1aWx0aW5fYnVuZGxlX3VzYWdlLAorCQlQQVJTRV9PUFRfU1RPUF9BVF9OT05fT1BUSU9OKTsKIAotCWNtZCA9IGFyZ3ZbMV07Ci0JYnVuZGxlX2ZpbGUgPSBwcmVmaXhfZmlsZW5hbWUocHJlZml4LCBhcmd2WzJdKTsKLQlhcmdjIC09IDI7Ci0JYXJndiArPSAyOworCXBhY2tldF90cmFjZV9pZGVudGl0eSgiYnVuZGxlIik7CiAKLQltZW1zZXQoJmhlYWRlciwgMCwgc2l6ZW9mKGhlYWRlcikpOwotCWlmIChzdHJjbXAoY21kLCAiY3JlYXRlIikgJiYgKGJ1bmRsZV9mZCA9Ci0JCQkJcmVhZF9idW5kbGVfaGVhZGVyKGJ1bmRsZV9maWxlLCAmaGVhZGVyKSkgPCAwKQotCQlyZXR1cm4gMTsKKwlpZiAoYXJnYyA8IDIpCisJCXVzYWdlX3dpdGhfb3B0aW9ucyhidWlsdGluX2J1bmRsZV91c2FnZSwgb3B0aW9ucyk7CiAKLQlpZiAoIXN0cmNtcChjbWQsICJ2ZXJpZnkiKSkgewotCQljbG9zZShidW5kbGVfZmQpOwotCQlpZiAoYXJnYyAhPSAxKSB7Ci0JCQl1c2FnZShidWlsdGluX2J1bmRsZV91c2FnZSk7Ci0JCQlyZXR1cm4gMTsKLQkJfQotCQlpZiAodmVyaWZ5X2J1bmRsZSh0aGVfcmVwb3NpdG9yeSwgJmhlYWRlciwgMSkpCi0JCQlyZXR1cm4gMTsKLQkJZnByaW50ZihzdGRlcnIsIF8oIiVzIGlzIG9rYXlcbiIpLCBidW5kbGVfZmlsZSk7Ci0JCXJldHVybiAwOworCWVsc2UgaWYgKCFzdHJjbXAoYXJndlswXSwgImNyZWF0ZSIpKQorCQlyZXN1bHQgPSBjbWRfYnVuZGxlX2NyZWF0ZShhcmdjLCBhcmd2LCBwcmVmaXgpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJndlswXSwgInZlcmlmeSIpKQorCQlyZXN1bHQgPSBjbWRfYnVuZGxlX3ZlcmlmeShhcmdjLCBhcmd2LCBwcmVmaXgpOworCWVsc2UgaWYgKCFzdHJjbXAoYXJndlswXSwgImxpc3QtaGVhZHMiKSkKKwkJcmVzdWx0ID0gY21kX2J1bmRsZV9saXN0X2hlYWRzKGFyZ2MsIGFyZ3YsIHByZWZpeCk7CisJZWxzZSBpZiAoIXN0cmNtcChhcmd2WzBdLCAidW5idW5kbGUiKSkKKwkJcmVzdWx0ID0gY21kX2J1bmRsZV91bmJ1bmRsZShhcmdjLCBhcmd2LCBwcmVmaXgpOworCWVsc2UgeworCQllcnJvcihfKCJVbmtub3duIHN1YmNvbW1hbmQ6ICVzIiksIGFyZ3ZbMF0pOworCQl1c2FnZV93aXRoX29wdGlvbnMoYnVpbHRpbl9idW5kbGVfdXNhZ2UsIG9wdGlvbnMpOwogCX0KLQlpZiAoIXN0cmNtcChjbWQsICJsaXN0LWhlYWRzIikpIHsKLQkJY2xvc2UoYnVuZGxlX2ZkKTsKLQkJcmV0dXJuICEhbGlzdF9idW5kbGVfcmVmcygmaGVhZGVyLCBhcmdjLCBhcmd2KTsKLQl9Ci0JaWYgKCFzdHJjbXAoY21kLCAiY3JlYXRlIikpIHsKLQkJaWYgKGFyZ2MgPCAyKSB7Ci0JCQl1c2FnZShidWlsdGluX2J1bmRsZV91c2FnZSk7Ci0JCQlyZXR1cm4gMTsKLQkJfQotCQlpZiAoIXN0YXJ0dXBfaW5mby0+aGF2ZV9yZXBvc2l0b3J5KQotCQkJZGllKF8oIk5lZWQgYSByZXBvc2l0b3J5IHRvIGNyZWF0ZSBhIGJ1bmRsZS4iKSk7Ci0JCXJldHVybiAhIWNyZWF0ZV9idW5kbGUodGhlX3JlcG9zaXRvcnksIGJ1bmRsZV9maWxlLCBhcmdjLCBhcmd2KTsKLQl9IGVsc2UgaWYgKCFzdHJjbXAoY21kLCAidW5idW5kbGUiKSkgewotCQlpZiAoIXN0YXJ0dXBfaW5mby0+aGF2ZV9yZXBvc2l0b3J5KQotCQkJZGllKF8oIk5lZWQgYSByZXBvc2l0b3J5IHRvIHVuYnVuZGxlLiIpKTsKLQkJcmV0dXJuICEhdW5idW5kbGUodGhlX3JlcG9zaXRvcnksICZoZWFkZXIsIGJ1bmRsZV9mZCwgMCkgfHwKLQkJCWxpc3RfYnVuZGxlX3JlZnMoJmhlYWRlciwgYXJnYywgYXJndik7Ci0JfSBlbHNlCi0JCXVzYWdlKGJ1aWx0aW5fYnVuZGxlX3VzYWdlKTsKKwlyZXR1cm4gcmVzdWx0ID8gMSA6IDA7CiB9CmRpZmYgLS1naXQgYS9idWlsdGluL2Nsb25lLmMgYi9idWlsdGluL2Nsb25lLmMKaW5kZXggOGJmMTJjZS4uNDBjMGJmMiAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jbG9uZS5jCisrKyBiL2J1aWx0aW4vY2xvbmUuYwpAQCAtODk5LDcgKzg5OSw3IEBACiAJZnJlZShhbHRlcm5hdGVzKTsKIH0KIAotc3RhdGljIGludCBkaXJfZXhpc3RzKGNvbnN0IGNoYXIgKnBhdGgpCitzdGF0aWMgaW50IHBhdGhfZXhpc3RzKGNvbnN0IGNoYXIgKnBhdGgpCiB7CiAJc3RydWN0IHN0YXQgc2I7CiAJcmV0dXJuICFzdGF0KHBhdGgsICZzYik7CkBAIC05NzksNyArOTc5LDcgQEAKIAkJZGlyID0gZ3Vlc3NfZGlyX25hbWUocmVwb19uYW1lLCBpc19idW5kbGUsIG9wdGlvbl9iYXJlKTsKIAlzdHJpcF90cmFpbGluZ19zbGFzaGVzKGRpcik7CiAKLQlkZXN0X2V4aXN0cyA9IGRpcl9leGlzdHMoZGlyKTsKKwlkZXN0X2V4aXN0cyA9IHBhdGhfZXhpc3RzKGRpcik7CiAJaWYgKGRlc3RfZXhpc3RzICYmICFpc19lbXB0eV9kaXIoZGlyKSkKIAkJZGllKF8oImRlc3RpbmF0aW9uIHBhdGggJyVzJyBhbHJlYWR5IGV4aXN0cyBhbmQgaXMgbm90ICIKIAkJCSJhbiBlbXB0eSBkaXJlY3RvcnkuIiksIGRpcik7CkBAIC05OTAsNyArOTkwLDcgQEAKIAkJd29ya190cmVlID0gTlVMTDsKIAllbHNlIHsKIAkJd29ya190cmVlID0gZ2V0ZW52KCJHSVRfV09SS19UUkVFIik7Ci0JCWlmICh3b3JrX3RyZWUgJiYgZGlyX2V4aXN0cyh3b3JrX3RyZWUpKQorCQlpZiAod29ya190cmVlICYmIHBhdGhfZXhpc3RzKHdvcmtfdHJlZSkpCiAJCQlkaWUoXygid29ya2luZyB0cmVlICclcycgYWxyZWFkeSBleGlzdHMuIiksIHdvcmtfdHJlZSk7CiAJfQogCkBAIC0xMDE4LDcgKzEwMTgsNyBAQAogCX0KIAogCWlmIChyZWFsX2dpdF9kaXIpIHsKLQkJaWYgKGRpcl9leGlzdHMocmVhbF9naXRfZGlyKSkKKwkJaWYgKHBhdGhfZXhpc3RzKHJlYWxfZ2l0X2RpcikpCiAJCQlqdW5rX2dpdF9kaXJfZmxhZ3MgfD0gUkVNT1ZFX0RJUl9LRUVQX1RPUExFVkVMOwogCQlqdW5rX2dpdF9kaXIgPSByZWFsX2dpdF9kaXI7CiAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vY29tbWl0LWdyYXBoLmMgYi9idWlsdGluL2NvbW1pdC1ncmFwaC5jCmluZGV4IGFkZGM4ZDQuLmVjMGZjOTMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vY29tbWl0LWdyYXBoLmMKKysrIGIvYnVpbHRpbi9jb21taXQtZ3JhcGguYwpAQCAtOCw3ICs4LDYgQEAKICNpbmNsdWRlICJvYmplY3Qtc3RvcmUuaCIKIAogc3RhdGljIGNoYXIgY29uc3QgKiBjb25zdCBidWlsdGluX2NvbW1pdF9ncmFwaF91c2FnZVtdID0gewotCU5fKCJnaXQgY29tbWl0LWdyYXBoIFstLW9iamVjdC1kaXIgPG9iamRpcj5dIiksCiAJTl8oImdpdCBjb21taXQtZ3JhcGggcmVhZCBbLS1vYmplY3QtZGlyIDxvYmpkaXI+XSIpLAogCU5fKCJnaXQgY29tbWl0LWdyYXBoIHZlcmlmeSBbLS1vYmplY3QtZGlyIDxvYmpkaXI+XSBbLS1zaGFsbG93XSBbLS1bbm8tXXByb2dyZXNzXSIpLAogCU5fKCJnaXQgY29tbWl0LWdyYXBoIHdyaXRlIFstLW9iamVjdC1kaXIgPG9iamRpcj5dIFstLWFwcGVuZHwtLXNwbGl0XSBbLS1yZWFjaGFibGV8LS1zdGRpbi1wYWNrc3wtLXN0ZGluLWNvbW1pdHNdIFstLVtuby1dcHJvZ3Jlc3NdIDxzcGxpdCBvcHRpb25zPiIpLApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9jb21taXQuYyBiL2J1aWx0aW4vY29tbWl0LmMKaW5kZXggZTU4OGJjNi4uMjk0ZGM1NyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9jb21taXQuYworKysgYi9idWlsdGluL2NvbW1pdC5jCkBAIC0xNDYzLDI4ICsxNDYzLDYgQEAKIAlyZXR1cm4gZ2l0X3N0YXR1c19jb25maWcoaywgdiwgcyk7CiB9CiAKLWludCBydW5fY29tbWl0X2hvb2soaW50IGVkaXRvcl9pc191c2VkLCBjb25zdCBjaGFyICppbmRleF9maWxlLCBjb25zdCBjaGFyICpuYW1lLCAuLi4pCi17Ci0Jc3RydWN0IGFyZ3ZfYXJyYXkgaG9va19lbnYgPSBBUkdWX0FSUkFZX0lOSVQ7Ci0JdmFfbGlzdCBhcmdzOwotCWludCByZXQ7Ci0KLQlhcmd2X2FycmF5X3B1c2hmKCZob29rX2VudiwgIkdJVF9JTkRFWF9GSUxFPSVzIiwgaW5kZXhfZmlsZSk7Ci0KLQkvKgotCSAqIExldCB0aGUgaG9vayBrbm93IHRoYXQgbm8gZWRpdG9yIHdpbGwgYmUgbGF1bmNoZWQuCi0JICovCi0JaWYgKCFlZGl0b3JfaXNfdXNlZCkKLQkJYXJndl9hcnJheV9wdXNoKCZob29rX2VudiwgIkdJVF9FRElUT1I9OiIpOwotCi0JdmFfc3RhcnQoYXJncywgbmFtZSk7Ci0JcmV0ID0gcnVuX2hvb2tfdmUoaG9va19lbnYuYXJndixuYW1lLCBhcmdzKTsKLQl2YV9lbmQoYXJncyk7Ci0JYXJndl9hcnJheV9jbGVhcigmaG9va19lbnYpOwotCi0JcmV0dXJuIHJldDsKLX0KLQogaW50IGNtZF9jb21taXQoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpwcmVmaXgpCiB7CiAJY29uc3QgY2hhciAqYXJndl9nY19hdXRvW10gPSB7ImdjIiwgIi0tYXV0byIsIE5VTEx9OwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9mZXRjaC5jIGIvYnVpbHRpbi9mZXRjaC5jCmluZGV4IDVmZjczNjcuLjQ2Y2U3YzIgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZmV0Y2guYworKysgYi9idWlsdGluL2ZldGNoLmMKQEAgLTc3LDYgKzc3LDcgQEAKIHN0YXRpYyBzdHJ1Y3QgbGlzdF9vYmplY3RzX2ZpbHRlcl9vcHRpb25zIGZpbHRlcl9vcHRpb25zOwogc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCBzZXJ2ZXJfb3B0aW9ucyA9IFNUUklOR19MSVNUX0lOSVRfRFVQOwogc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCBuZWdvdGlhdGlvbl90aXAgPSBTVFJJTkdfTElTVF9JTklUX05PRFVQOworc3RhdGljIGludCBmZXRjaF93cml0ZV9jb21taXRfZ3JhcGggPSAtMTsKIAogc3RhdGljIGludCBnaXRfZmV0Y2hfY29uZmlnKGNvbnN0IGNoYXIgKmssIGNvbnN0IGNoYXIgKnYsIHZvaWQgKmNiKQogewpAQCAtMTk4LDYgKzE5OSw4IEBACiAJCSBOXygicnVuICdnYyAtLWF1dG8nIGFmdGVyIGZldGNoaW5nIikpLAogCU9QVF9CT09MKDAsICJzaG93LWZvcmNlZC11cGRhdGVzIiwgJmZldGNoX3Nob3dfZm9yY2VkX3VwZGF0ZXMsCiAJCSBOXygiY2hlY2sgZm9yIGZvcmNlZC11cGRhdGVzIG9uIGFsbCB1cGRhdGVkIGJyYW5jaGVzIikpLAorCU9QVF9CT09MKDAsICJ3cml0ZS1jb21taXQtZ3JhcGgiLCAmZmV0Y2hfd3JpdGVfY29tbWl0X2dyYXBoLAorCQkgTl8oIndyaXRlIHRoZSBjb21taXQtZ3JhcGggYWZ0ZXIgZmV0Y2hpbmciKSksCiAJT1BUX0VORCgpCiB9OwogCkBAIC0xNDAxLDcgKzE0MDQsNyBAQAogCiAJCS8qCiAJCSAqIFdlJ3JlIHNldHRpbmcgdGhlIHVwc3RyZWFtIGNvbmZpZ3VyYXRpb24gZm9yIHRoZQotCQkgKiBjdXJyZW50IGJyYW5jaC4gVGhlIHJlbGV2ZW50IHVwc3RyZWFtIGlzIHRoZQorCQkgKiBjdXJyZW50IGJyYW5jaC4gVGhlIHJlbGV2YW50IHVwc3RyZWFtIGlzIHRoZQogCQkgKiBmZXRjaGVkIGJyYW5jaCB0aGF0IGlzIG1lYW50IHRvIGJlIG1lcmdlZCB3aXRoIHRoZQogCQkgKiBjdXJyZW50IG9uZSwgaS5lLiB0aGUgb25lIGZldGNoZWQgdG8gRkVUQ0hfSEVBRC4KIAkJICoKQEAgLTE0MTIsNyArMTQxNSw3IEBACiAJCWZvciAocm0gPSByZWZfbWFwOyBybTsgcm0gPSBybS0+bmV4dCkgewogCQkJaWYgKCFybS0+cGVlcl9yZWYpIHsKIAkJCQlpZiAoc291cmNlX3JlZikgewotCQkJCQl3YXJuaW5nKF8oIm11bHRpcGxlIGJyYW5jaCBkZXRlY3RlZCwgaW5jb21wYXRpYmxlIHdpdGggLS1zZXQtdXBzdHJlYW0iKSk7CisJCQkJCXdhcm5pbmcoXygibXVsdGlwbGUgYnJhbmNoZXMgZGV0ZWN0ZWQsIGluY29tcGF0aWJsZSB3aXRoIC0tc2V0LXVwc3RyZWFtIikpOwogCQkJCQlnb3RvIHNraXA7CiAJCQkJfSBlbHNlIHsKIAkJCQkJc291cmNlX3JlZiA9IHJtOwpAQCAtMTYwMCw3ICsxNjAzLDggQEAKIAkJCXJldHVybiBlcnJjb2RlOwogCX0KIAotCWFyZ3ZfYXJyYXlfcHVzaGwoJmFyZ3YsICJmZXRjaCIsICItLWFwcGVuZCIsICItLW5vLWF1dG8tZ2MiLCBOVUxMKTsKKwlhcmd2X2FycmF5X3B1c2hsKCZhcmd2LCAiZmV0Y2giLCAiLS1hcHBlbmQiLCAiLS1uby1hdXRvLWdjIiwKKwkJCSItLW5vLXdyaXRlLWNvbW1pdC1ncmFwaCIsIE5VTEwpOwogCWFkZF9vcHRpb25zX3RvX2FyZ3YoJmFyZ3YpOwogCiAJaWYgKG1heF9jaGlsZHJlbiAhPSAxICYmIGxpc3QtPm5yICE9IDEpIHsKQEAgLTE4NjQsNyArMTg2OCw5IEBACiAJc3RyaW5nX2xpc3RfY2xlYXIoJmxpc3QsIDApOwogCiAJcHJlcGFyZV9yZXBvX3NldHRpbmdzKHRoZV9yZXBvc2l0b3J5KTsKLQlpZiAodGhlX3JlcG9zaXRvcnktPnNldHRpbmdzLmZldGNoX3dyaXRlX2NvbW1pdF9ncmFwaCkgeworCWlmIChmZXRjaF93cml0ZV9jb21taXRfZ3JhcGggPiAwIHx8CisJICAgIChmZXRjaF93cml0ZV9jb21taXRfZ3JhcGggPCAwICYmCisJICAgICB0aGVfcmVwb3NpdG9yeS0+c2V0dGluZ3MuZmV0Y2hfd3JpdGVfY29tbWl0X2dyYXBoKSkgewogCQlpbnQgY29tbWl0X2dyYXBoX2ZsYWdzID0gQ09NTUlUX0dSQVBIX1dSSVRFX1NQTElUOwogCQlzdHJ1Y3Qgc3BsaXRfY29tbWl0X2dyYXBoX29wdHMgc3BsaXRfb3B0czsKIAkJbWVtc2V0KCZzcGxpdF9vcHRzLCAwLCBzaXplb2Yoc3RydWN0IHNwbGl0X2NvbW1pdF9ncmFwaF9vcHRzKSk7CmRpZmYgLS1naXQgYS9idWlsdGluL2ZzY2suYyBiL2J1aWx0aW4vZnNjay5jCmluZGV4IDE4NDAzYTkuLjhkMTM3OTQgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vZnNjay5jCisrKyBiL2J1aWx0aW4vZnNjay5jCkBAIC01MCw0MCArNTAsMjAgQEAKICNkZWZpbmUgRVJST1JfUkVGUyAwMTAKICNkZWZpbmUgRVJST1JfQ09NTUlUX0dSQVBIIDAyMAogCi1zdGF0aWMgY29uc3QgY2hhciAqZGVzY3JpYmVfb2JqZWN0KHN0cnVjdCBvYmplY3QgKm9iaikKK3N0YXRpYyBjb25zdCBjaGFyICpkZXNjcmliZV9vYmplY3QoY29uc3Qgc3RydWN0IG9iamVjdF9pZCAqb2lkKQogewotCXN0YXRpYyBzdHJ1Y3Qgc3RyYnVmIGJ1ZnNbXSA9IHsKLQkJU1RSQlVGX0lOSVQsIFNUUkJVRl9JTklULCBTVFJCVUZfSU5JVCwgU1RSQlVGX0lOSVQKLQl9OwotCXN0YXRpYyBpbnQgYiA9IDA7Ci0Jc3RydWN0IHN0cmJ1ZiAqYnVmOwotCWNoYXIgKm5hbWUgPSBOVUxMOwotCi0JaWYgKG5hbWVfb2JqZWN0cykKLQkJbmFtZSA9IGxvb2t1cF9kZWNvcmF0aW9uKGZzY2tfd2Fsa19vcHRpb25zLm9iamVjdF9uYW1lcywgb2JqKTsKLQotCWJ1ZiA9IGJ1ZnMgKyBiOwotCWIgPSAoYiArIDEpICUgQVJSQVlfU0laRShidWZzKTsKLQlzdHJidWZfcmVzZXQoYnVmKTsKLQlzdHJidWZfYWRkc3RyKGJ1Ziwgb2lkX3RvX2hleCgmb2JqLT5vaWQpKTsKLQlpZiAobmFtZSkKLQkJc3RyYnVmX2FkZGYoYnVmLCAiICglcykiLCBuYW1lKTsKLQotCXJldHVybiBidWYtPmJ1ZjsKKwlyZXR1cm4gZnNja19kZXNjcmliZV9vYmplY3QoJmZzY2tfd2Fsa19vcHRpb25zLCBvaWQpOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqcHJpbnRhYmxlX3R5cGUoc3RydWN0IG9iamVjdCAqb2JqKQorc3RhdGljIGNvbnN0IGNoYXIgKnByaW50YWJsZV90eXBlKGNvbnN0IHN0cnVjdCBvYmplY3RfaWQgKm9pZCwKKwkJCQkgIGVudW0gb2JqZWN0X3R5cGUgdHlwZSkKIHsKIAljb25zdCBjaGFyICpyZXQ7CiAKLQlpZiAob2JqLT50eXBlID09IE9CSl9OT05FKSB7Ci0JCWVudW0gb2JqZWN0X3R5cGUgdHlwZSA9IG9pZF9vYmplY3RfaW5mbyh0aGVfcmVwb3NpdG9yeSwKLQkJCQkJCQkmb2JqLT5vaWQsIE5VTEwpOwotCQlpZiAodHlwZSA+IDApCi0JCQlvYmplY3RfYXNfdHlwZSh0aGVfcmVwb3NpdG9yeSwgb2JqLCB0eXBlLCAwKTsKLQl9CisJaWYgKHR5cGUgPT0gT0JKX05PTkUpCisJCXR5cGUgPSBvaWRfb2JqZWN0X2luZm8odGhlX3JlcG9zaXRvcnksIG9pZCwgTlVMTCk7CiAKLQlyZXQgPSB0eXBlX25hbWUob2JqLT50eXBlKTsKKwlyZXQgPSB0eXBlX25hbWUodHlwZSk7CiAJaWYgKCFyZXQpCiAJCXJldCA9IF8oInVua25vd24iKTsKIApAQCAtMTE4LDI2ICs5OCwzMiBAQAogCWVycm9yc19mb3VuZCB8PSBFUlJPUl9PQkpFQ1Q7CiAJLyogVFJBTlNMQVRPUlM6IGUuZy4gZXJyb3IgaW4gdHJlZSAwMWJmZGE6IDxtb3JlIGV4cGxhbmF0aW9uPiAqLwogCWZwcmludGZfbG4oc3RkZXJyLCBfKCJlcnJvciBpbiAlcyAlczogJXMiKSwKLQkJICAgcHJpbnRhYmxlX3R5cGUob2JqKSwgZGVzY3JpYmVfb2JqZWN0KG9iaiksIGVycik7CisJCSAgIHByaW50YWJsZV90eXBlKCZvYmotPm9pZCwgb2JqLT50eXBlKSwKKwkJICAgZGVzY3JpYmVfb2JqZWN0KCZvYmotPm9pZCksIGVycik7CiAJcmV0dXJuIC0xOwogfQogCiBzdGF0aWMgaW50IGZzY2tfZXJyb3JfZnVuYyhzdHJ1Y3QgZnNja19vcHRpb25zICpvLAotCXN0cnVjdCBvYmplY3QgKm9iaiwgaW50IHR5cGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpCisJCQkgICBjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQsCisJCQkgICBlbnVtIG9iamVjdF90eXBlIG9iamVjdF90eXBlLAorCQkJICAgaW50IG1zZ190eXBlLCBjb25zdCBjaGFyICptZXNzYWdlKQogewotCXN3aXRjaCAodHlwZSkgeworCXN3aXRjaCAobXNnX3R5cGUpIHsKIAljYXNlIEZTQ0tfV0FSTjoKIAkJLyogVFJBTlNMQVRPUlM6IGUuZy4gd2FybmluZyBpbiB0cmVlIDAxYmZkYTogPG1vcmUgZXhwbGFuYXRpb24+ICovCiAJCWZwcmludGZfbG4oc3RkZXJyLCBfKCJ3YXJuaW5nIGluICVzICVzOiAlcyIpLAotCQkJICAgcHJpbnRhYmxlX3R5cGUob2JqKSwgZGVzY3JpYmVfb2JqZWN0KG9iaiksIG1lc3NhZ2UpOworCQkJICAgcHJpbnRhYmxlX3R5cGUob2lkLCBvYmplY3RfdHlwZSksCisJCQkgICBkZXNjcmliZV9vYmplY3Qob2lkKSwgbWVzc2FnZSk7CiAJCXJldHVybiAwOwogCWNhc2UgRlNDS19FUlJPUjoKIAkJLyogVFJBTlNMQVRPUlM6IGUuZy4gZXJyb3IgaW4gdHJlZSAwMWJmZGE6IDxtb3JlIGV4cGxhbmF0aW9uPiAqLwogCQlmcHJpbnRmX2xuKHN0ZGVyciwgXygiZXJyb3IgaW4gJXMgJXM6ICVzIiksCi0JCQkgICBwcmludGFibGVfdHlwZShvYmopLCBkZXNjcmliZV9vYmplY3Qob2JqKSwgbWVzc2FnZSk7CisJCQkgICBwcmludGFibGVfdHlwZShvaWQsIG9iamVjdF90eXBlKSwKKwkJCSAgIGRlc2NyaWJlX29iamVjdChvaWQpLCBtZXNzYWdlKTsKIAkJcmV0dXJuIDE7CiAJZGVmYXVsdDoKLQkJQlVHKCIlZCAoRlNDS19JR05PUkU/KSBzaG91bGQgbmV2ZXIgdHJpZ2dlciB0aGlzIGNhbGxiYWNrIiwgdHlwZSk7CisJCUJVRygiJWQgKEZTQ0tfSUdOT1JFPykgc2hvdWxkIG5ldmVyIHRyaWdnZXIgdGhpcyBjYWxsYmFjayIsCisJCSAgICBtc2dfdHlwZSk7CiAJfQogfQogCkBAIC0xNTUsNyArMTQxLDggQEAKIAlpZiAoIW9iaikgewogCQkvKiAuLi4gdGhlc2UgcmVmZXJlbmNlcyB0byBwYXJlbnQtPmZsZCBhcmUgc2FmZSBoZXJlICovCiAJCXByaW50Zl9sbihfKCJicm9rZW4gbGluayBmcm9tICU3cyAlcyIpLAotCQkJICBwcmludGFibGVfdHlwZShwYXJlbnQpLCBkZXNjcmliZV9vYmplY3QocGFyZW50KSk7CisJCQkgIHByaW50YWJsZV90eXBlKCZwYXJlbnQtPm9pZCwgcGFyZW50LT50eXBlKSwKKwkJCSAgZGVzY3JpYmVfb2JqZWN0KCZwYXJlbnQtPm9pZCkpOwogCQlwcmludGZfbG4oXygiYnJva2VuIGxpbmsgZnJvbSAlN3MgJXMiKSwKIAkJCSAgKHR5cGUgPT0gT0JKX0FOWSA/IF8oInVua25vd24iKSA6IHR5cGVfbmFtZSh0eXBlKSksCiAJCQkgIF8oInVua25vd24iKSk7CkBAIC0xODMsMTAgKzE3MCwxMCBAQAogCQlpZiAocGFyZW50ICYmICFoYXNfb2JqZWN0X2ZpbGUoJm9iai0+b2lkKSkgewogCQkJcHJpbnRmX2xuKF8oImJyb2tlbiBsaW5rIGZyb20gJTdzICVzXG4iCiAJCQkJICAgICIgICAgICAgICAgICAgIHRvICU3cyAlcyIpLAotCQkJCSAgcHJpbnRhYmxlX3R5cGUocGFyZW50KSwKLQkJCQkgIGRlc2NyaWJlX29iamVjdChwYXJlbnQpLAotCQkJCSAgcHJpbnRhYmxlX3R5cGUob2JqKSwKLQkJCQkgIGRlc2NyaWJlX29iamVjdChvYmopKTsKKwkJCQkgIHByaW50YWJsZV90eXBlKCZwYXJlbnQtPm9pZCwgcGFyZW50LT50eXBlKSwKKwkJCQkgIGRlc2NyaWJlX29iamVjdCgmcGFyZW50LT5vaWQpLAorCQkJCSAgcHJpbnRhYmxlX3R5cGUoJm9iai0+b2lkLCBvYmotPnR5cGUpLAorCQkJCSAgZGVzY3JpYmVfb2JqZWN0KCZvYmotPm9pZCkpOwogCQkJZXJyb3JzX2ZvdW5kIHw9IEVSUk9SX1JFQUNIQUJMRTsKIAkJfQogCQlyZXR1cm4gMTsKQEAgLTI5Miw4ICsyNzksOSBAQAogCQkJcmV0dXJuOwogCQlpZiAoaGFzX29iamVjdF9wYWNrKCZvYmotPm9pZCkpCiAJCQlyZXR1cm47IC8qIGl0IGlzIGluIHBhY2sgLSBmb3JnZXQgYWJvdXQgaXQgKi8KLQkJcHJpbnRmX2xuKF8oIm1pc3NpbmcgJXMgJXMiKSwgcHJpbnRhYmxlX3R5cGUob2JqKSwKLQkJCSAgZGVzY3JpYmVfb2JqZWN0KG9iaikpOworCQlwcmludGZfbG4oXygibWlzc2luZyAlcyAlcyIpLAorCQkJICBwcmludGFibGVfdHlwZSgmb2JqLT5vaWQsIG9iai0+dHlwZSksCisJCQkgIGRlc2NyaWJlX29iamVjdCgmb2JqLT5vaWQpKTsKIAkJZXJyb3JzX2ZvdW5kIHw9IEVSUk9SX1JFQUNIQUJMRTsKIAkJcmV0dXJuOwogCX0KQEAgLTMxOCw4ICszMDYsOSBAQAogCSAqIHNpbmNlIHRoaXMgaXMgc29tZXRoaW5nIHRoYXQgaXMgcHJ1bmFibGUuCiAJICovCiAJaWYgKHNob3dfdW5yZWFjaGFibGUpIHsKLQkJcHJpbnRmX2xuKF8oInVucmVhY2hhYmxlICVzICVzIiksIHByaW50YWJsZV90eXBlKG9iaiksCi0JCQkgIGRlc2NyaWJlX29iamVjdChvYmopKTsKKwkJcHJpbnRmX2xuKF8oInVucmVhY2hhYmxlICVzICVzIiksCisJCQkgIHByaW50YWJsZV90eXBlKCZvYmotPm9pZCwgb2JqLT50eXBlKSwKKwkJCSAgZGVzY3JpYmVfb2JqZWN0KCZvYmotPm9pZCkpOwogCQlyZXR1cm47CiAJfQogCkBAIC0zMzcsMTIgKzMyNiwxMyBAQAogCSAqLwogCWlmICghKG9iai0+ZmxhZ3MgJiBVU0VEKSkgewogCQlpZiAoc2hvd19kYW5nbGluZykKLQkJCXByaW50Zl9sbihfKCJkYW5nbGluZyAlcyAlcyIpLCBwcmludGFibGVfdHlwZShvYmopLAotCQkJCSAgZGVzY3JpYmVfb2JqZWN0KG9iaikpOworCQkJcHJpbnRmX2xuKF8oImRhbmdsaW5nICVzICVzIiksCisJCQkJICBwcmludGFibGVfdHlwZSgmb2JqLT5vaWQsIG9iai0+dHlwZSksCisJCQkJICBkZXNjcmliZV9vYmplY3QoJm9iai0+b2lkKSk7CiAJCWlmICh3cml0ZV9sb3N0X2FuZF9mb3VuZCkgewogCQkJY2hhciAqZmlsZW5hbWUgPSBnaXRfcGF0aGR1cCgibG9zdC1mb3VuZC8lcy8lcyIsCiAJCQkJb2JqLT50eXBlID09IE9CSl9DT01NSVQgPyAiY29tbWl0IiA6ICJvdGhlciIsCi0JCQkJZGVzY3JpYmVfb2JqZWN0KG9iaikpOworCQkJCWRlc2NyaWJlX29iamVjdCgmb2JqLT5vaWQpKTsKIAkJCUZJTEUgKmY7CiAKIAkJCWlmIChzYWZlX2NyZWF0ZV9sZWFkaW5nX2RpcmVjdG9yaWVzX2NvbnN0KGZpbGVuYW1lKSkgewpAQCAtMzU1LDcgKzM0NSw3IEBACiAJCQkJaWYgKHN0cmVhbV9ibG9iX3RvX2ZkKGZpbGVubyhmKSwgJm9iai0+b2lkLCBOVUxMLCAxKSkKIAkJCQkJZGllX2Vycm5vKF8oImNvdWxkIG5vdCB3cml0ZSAnJXMnIiksIGZpbGVuYW1lKTsKIAkJCX0gZWxzZQotCQkJCWZwcmludGYoZiwgIiVzXG4iLCBkZXNjcmliZV9vYmplY3Qob2JqKSk7CisJCQkJZnByaW50ZihmLCAiJXNcbiIsIGRlc2NyaWJlX29iamVjdCgmb2JqLT5vaWQpKTsKIAkJCWlmIChmY2xvc2UoZikpCiAJCQkJZGllX2Vycm5vKF8oImNvdWxkIG5vdCBmaW5pc2ggJyVzJyIpLAogCQkJCQkgIGZpbGVuYW1lKTsKQEAgLTM3NCw3ICszNjQsNyBAQAogc3RhdGljIHZvaWQgY2hlY2tfb2JqZWN0KHN0cnVjdCBvYmplY3QgKm9iaikKIHsKIAlpZiAodmVyYm9zZSkKLQkJZnByaW50Zl9sbihzdGRlcnIsIF8oIkNoZWNraW5nICVzIiksIGRlc2NyaWJlX29iamVjdChvYmopKTsKKwkJZnByaW50Zl9sbihzdGRlcnIsIF8oIkNoZWNraW5nICVzIiksIGRlc2NyaWJlX29iamVjdCgmb2JqLT5vaWQpKTsKIAogCWlmIChvYmotPmZsYWdzICYgUkVBQ0hBQkxFKQogCQljaGVja19yZWFjaGFibGVfb2JqZWN0KG9iaik7CkBAIC00MzIsNyArNDIyLDggQEAKIAogCWlmICh2ZXJib3NlKQogCQlmcHJpbnRmX2xuKHN0ZGVyciwgXygiQ2hlY2tpbmcgJXMgJXMiKSwKLQkJCSAgIHByaW50YWJsZV90eXBlKG9iaiksIGRlc2NyaWJlX29iamVjdChvYmopKTsKKwkJCSAgIHByaW50YWJsZV90eXBlKCZvYmotPm9pZCwgb2JqLT50eXBlKSwKKwkJCSAgIGRlc2NyaWJlX29iamVjdCgmb2JqLT5vaWQpKTsKIAogCWlmIChmc2NrX3dhbGsob2JqLCBOVUxMLCAmZnNja19vYmpfb3B0aW9ucykpCiAJCW9iamVycm9yKG9iaiwgXygiYnJva2VuIGxpbmtzIikpOwpAQCAtNDQ1LDcgKzQzNiw3IEBACiAKIAkJaWYgKCFjb21taXQtPnBhcmVudHMgJiYgc2hvd19yb290KQogCQkJcHJpbnRmX2xuKF8oInJvb3QgJXMiKSwKLQkJCQkgIGRlc2NyaWJlX29iamVjdCgmY29tbWl0LT5vYmplY3QpKTsKKwkJCQkgIGRlc2NyaWJlX29iamVjdCgmY29tbWl0LT5vYmplY3Qub2lkKSk7CiAJfQogCiAJaWYgKG9iai0+dHlwZSA9PSBPQkpfVEFHKSB7CkBAIC00NTMsMTAgKzQ0NCwxMCBAQAogCiAJCWlmIChzaG93X3RhZ3MgJiYgdGFnLT50YWdnZWQpIHsKIAkJCXByaW50Zl9sbihfKCJ0YWdnZWQgJXMgJXMgKCVzKSBpbiAlcyIpLAotCQkJCSAgcHJpbnRhYmxlX3R5cGUodGFnLT50YWdnZWQpLAotCQkJCSAgZGVzY3JpYmVfb2JqZWN0KHRhZy0+dGFnZ2VkKSwKKwkJCQkgIHByaW50YWJsZV90eXBlKCZ0YWctPnRhZ2dlZC0+b2lkLCB0YWctPnRhZ2dlZC0+dHlwZSksCisJCQkJICBkZXNjcmliZV9vYmplY3QoJnRhZy0+dGFnZ2VkLT5vaWQpLAogCQkJCSAgdGFnLT50YWcsCi0JCQkJICBkZXNjcmliZV9vYmplY3QoJnRhZy0+b2JqZWN0KSk7CisJCQkJICBkZXNjcmliZV9vYmplY3QoJnRhZy0+b2JqZWN0Lm9pZCkpOwogCQl9CiAJfQogCkBAIC00OTksMTAgKzQ5MCwxMCBAQAogCWlmICghaXNfbnVsbF9vaWQob2lkKSkgewogCQlvYmogPSBsb29rdXBfb2JqZWN0KHRoZV9yZXBvc2l0b3J5LCBvaWQpOwogCQlpZiAob2JqICYmIChvYmotPmZsYWdzICYgSEFTX09CSikpIHsKLQkJCWlmICh0aW1lc3RhbXAgJiYgbmFtZV9vYmplY3RzKQotCQkJCWFkZF9kZWNvcmF0aW9uKGZzY2tfd2Fsa19vcHRpb25zLm9iamVjdF9uYW1lcywKLQkJCQkJb2JqLAotCQkJCQl4c3RyZm10KCIlc0B7JSJQUkl0aW1lIn0iLCByZWZuYW1lLCB0aW1lc3RhbXApKTsKKwkJCWlmICh0aW1lc3RhbXApCisJCQkJZnNja19wdXRfb2JqZWN0X25hbWUoJmZzY2tfd2Fsa19vcHRpb25zLCBvaWQsCisJCQkJCQkgICAgICIlc0B7JSJQUkl0aW1lIn0iLAorCQkJCQkJICAgICByZWZuYW1lLCB0aW1lc3RhbXApOwogCQkJb2JqLT5mbGFncyB8PSBVU0VEOwogCQkJbWFya19vYmplY3RfcmVhY2hhYmxlKG9iaik7CiAJCX0gZWxzZSBpZiAoIWlzX3Byb21pc29yX29iamVjdChvaWQpKSB7CkBAIC01NjYsOSArNTU3LDggQEAKIAl9CiAJZGVmYXVsdF9yZWZzKys7CiAJb2JqLT5mbGFncyB8PSBVU0VEOwotCWlmIChuYW1lX29iamVjdHMpCi0JCWFkZF9kZWNvcmF0aW9uKGZzY2tfd2Fsa19vcHRpb25zLm9iamVjdF9uYW1lcywKLQkJCW9iaiwgeHN0cmR1cChyZWZuYW1lKSk7CisJZnNja19wdXRfb2JqZWN0X25hbWUoJmZzY2tfd2Fsa19vcHRpb25zLAorCQkJICAgICBvaWQsICIlcyIsIHJlZm5hbWUpOwogCW1hcmtfb2JqZWN0X3JlYWNoYWJsZShvYmopOwogCiAJcmV0dXJuIDA7CkBAIC03NDIsOSArNzMyLDcgQEAKIAkJCXJldHVybiAxOwogCQl9CiAJCW9iai0+ZmxhZ3MgfD0gVVNFRDsKLQkJaWYgKG5hbWVfb2JqZWN0cykKLQkJCWFkZF9kZWNvcmF0aW9uKGZzY2tfd2Fsa19vcHRpb25zLm9iamVjdF9uYW1lcywKLQkJCQlvYmosIHhzdHJkdXAoIjoiKSk7CisJCWZzY2tfcHV0X29iamVjdF9uYW1lKCZmc2NrX3dhbGtfb3B0aW9ucywgJml0LT5vaWQsICI6Iik7CiAJCW1hcmtfb2JqZWN0X3JlYWNoYWJsZShvYmopOwogCQlpZiAob2JqLT50eXBlICE9IE9CSl9UUkVFKQogCQkJZXJyIHw9IG9iamVycm9yKG9iaiwgXygibm9uLXRyZWUgaW4gY2FjaGUtdHJlZSIpKTsKQEAgLTgzMCw4ICs4MTgsNyBAQAogCX0KIAogCWlmIChuYW1lX29iamVjdHMpCi0JCWZzY2tfd2Fsa19vcHRpb25zLm9iamVjdF9uYW1lcyA9Ci0JCQl4Y2FsbG9jKDEsIHNpemVvZihzdHJ1Y3QgZGVjb3JhdGlvbikpOworCQlmc2NrX2VuYWJsZV9vYmplY3RfbmFtZXMoJmZzY2tfd2Fsa19vcHRpb25zKTsKIAogCWdpdF9jb25maWcoZnNja19jb25maWcsIE5VTEwpOwogCkBAIC04OTAsOSArODc3LDggQEAKIAkJCX0KIAogCQkJb2JqLT5mbGFncyB8PSBVU0VEOwotCQkJaWYgKG5hbWVfb2JqZWN0cykKLQkJCQlhZGRfZGVjb3JhdGlvbihmc2NrX3dhbGtfb3B0aW9ucy5vYmplY3RfbmFtZXMsCi0JCQkJCW9iaiwgeHN0cmR1cChhcmcpKTsKKwkJCWZzY2tfcHV0X29iamVjdF9uYW1lKCZmc2NrX3dhbGtfb3B0aW9ucywgJm9pZCwKKwkJCQkJICAgICAiJXMiLCBhcmcpOwogCQkJbWFya19vYmplY3RfcmVhY2hhYmxlKG9iaik7CiAJCQljb250aW51ZTsKIAkJfQpAQCAtOTI4LDEwICs5MTQsOCBAQAogCQkJCWNvbnRpbnVlOwogCQkJb2JqID0gJmJsb2ItPm9iamVjdDsKIAkJCW9iai0+ZmxhZ3MgfD0gVVNFRDsKLQkJCWlmIChuYW1lX29iamVjdHMpCi0JCQkJYWRkX2RlY29yYXRpb24oZnNja193YWxrX29wdGlvbnMub2JqZWN0X25hbWVzLAotCQkJCQlvYmosCi0JCQkJCXhzdHJmbXQoIjolcyIsIGFjdGl2ZV9jYWNoZVtpXS0+bmFtZSkpOworCQkJZnNja19wdXRfb2JqZWN0X25hbWUoJmZzY2tfd2Fsa19vcHRpb25zLCAmb2JqLT5vaWQsCisJCQkJCSAgICAgIjolcyIsIGFjdGl2ZV9jYWNoZVtpXS0+bmFtZSk7CiAJCQltYXJrX29iamVjdF9yZWFjaGFibGUob2JqKTsKIAkJfQogCQlpZiAoYWN0aXZlX2NhY2hlX3RyZWUpCmRpZmYgLS1naXQgYS9idWlsdGluL2djLmMgYi9idWlsdGluL2djLmMKaW5kZXggZmFkYjQ1NC4uM2Y3NmJmNCAxMDA2NDQKLS0tIGEvYnVpbHRpbi9nYy5jCisrKyBiL2J1aWx0aW4vZ2MuYwpAQCAtNDU4LDcgKzQ1OCw3IEBACiAvKgogICogUmV0dXJucyAwIGlmIHRoZXJlIHdhcyBubyBwcmV2aW91cyBlcnJvciBhbmQgZ2MgY2FuIHByb2NlZWQsIDEgaWYKICAqIGdjIHNob3VsZCBub3QgcHJvY2VlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGxhc3QgcnVuLiBQcmludHMgYQotICogbWVzc2FnZSBhbmQgcmV0dXJucyAtMSBpZiBhbiBlcnJvciBvY2N1cmVkIHdoaWxlIHJlYWRpbmcgZ2MubG9nCisgKiBtZXNzYWdlIGFuZCByZXR1cm5zIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkIHdoaWxlIHJlYWRpbmcgZ2MubG9nCiAgKi8KIHN0YXRpYyBpbnQgcmVwb3J0X2xhc3RfZ2NfZXJyb3Iodm9pZCkKIHsKQEAgLTYwMSw3ICs2MDEsNyBAQAogCQlpZiAoZGV0YWNoX2F1dG8pIHsKIAkJCWludCByZXQgPSByZXBvcnRfbGFzdF9nY19lcnJvcigpOwogCQkJaWYgKHJldCA8IDApCi0JCQkJLyogYW4gSS9PIGVycm9yIG9jY3VyZWQsIGFscmVhZHkgcmVwb3J0ZWQgKi8KKwkJCQkvKiBhbiBJL08gZXJyb3Igb2NjdXJyZWQsIGFscmVhZHkgcmVwb3J0ZWQgKi8KIAkJCQlleGl0KDEyOCk7CiAJCQlpZiAocmV0ID09IDEpCiAJCQkJLyogTGFzdCBnYyAtLWF1dG8gZmFpbGVkLiBTa2lwIHRoaXMgb25lLiAqLwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9sb2cuYyBiL2J1aWx0aW4vbG9nLmMKaW5kZXggODk4NzNkMi4uYTI2ZjIyMyAxMDA2NDQKLS0tIGEvYnVpbHRpbi9sb2cuYworKysgYi9idWlsdGluL2xvZy5jCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAicmFuZ2UtZGlmZi5oIgogCiAjZGVmaW5lIE1BSUxfREVGQVVMVF9XUkFQIDcyCisjZGVmaW5lIENPVkVSX0ZST01fQVVUT19NQVhfU1VCSkVDVF9MRU4gMTAwCiAKIC8qIFNldCBhIGRlZmF1bHQgZGF0ZS10aW1lIGZvcm1hdCBmb3IgZ2l0IGxvZyAoImxvZy5kYXRlIiBjb25maWcgdmFyaWFibGUpICovCiBzdGF0aWMgY29uc3QgY2hhciAqZGVmYXVsdF9kYXRlX21vZGUgPSBOVUxMOwpAQCAtNzY1LDI0ICs3NjYsNTIgQEAKIAlpdGVtLT5zdHJpbmdbbGVuXSA9ICdcMCc7CiB9CiAKLSNkZWZpbmUgVEhSRUFEX1NIQUxMT1cgMQotI2RlZmluZSBUSFJFQURfREVFUCAyCi1zdGF0aWMgaW50IHRocmVhZDsKLXN0YXRpYyBpbnQgZG9fc2lnbm9mZjsKLXN0YXRpYyBpbnQgYmFzZV9hdXRvOwotc3RhdGljIGNoYXIgKmZyb207Ci1zdGF0aWMgY29uc3QgY2hhciAqc2lnbmF0dXJlID0gZ2l0X3ZlcnNpb25fc3RyaW5nOwotc3RhdGljIGNvbnN0IGNoYXIgKnNpZ25hdHVyZV9maWxlOwotc3RhdGljIGludCBjb25maWdfY292ZXJfbGV0dGVyOwotc3RhdGljIGNvbnN0IGNoYXIgKmNvbmZpZ19vdXRwdXRfZGlyZWN0b3J5OwotCi1lbnVtIHsKK2VudW0gY292ZXJfc2V0dGluZyB7CiAJQ09WRVJfVU5TRVQsCiAJQ09WRVJfT0ZGLAogCUNPVkVSX09OLAogCUNPVkVSX0FVVE8KIH07CiAKK2VudW0gdGhyZWFkX2xldmVsIHsKKwlUSFJFQURfVU5TRVQsCisJVEhSRUFEX1NIQUxMT1csCisJVEhSRUFEX0RFRVAKK307CisKK2VudW0gY292ZXJfZnJvbV9kZXNjcmlwdGlvbiB7CisJQ09WRVJfRlJPTV9OT05FLAorCUNPVkVSX0ZST01fTUVTU0FHRSwKKwlDT1ZFUl9GUk9NX1NVQkpFQ1QsCisJQ09WRVJfRlJPTV9BVVRPCit9OworCitzdGF0aWMgZW51bSB0aHJlYWRfbGV2ZWwgdGhyZWFkOworc3RhdGljIGludCBkb19zaWdub2ZmOworc3RhdGljIGludCBiYXNlX2F1dG87CitzdGF0aWMgY2hhciAqZnJvbTsKK3N0YXRpYyBjb25zdCBjaGFyICpzaWduYXR1cmUgPSBnaXRfdmVyc2lvbl9zdHJpbmc7CitzdGF0aWMgY29uc3QgY2hhciAqc2lnbmF0dXJlX2ZpbGU7CitzdGF0aWMgZW51bSBjb3Zlcl9zZXR0aW5nIGNvbmZpZ19jb3Zlcl9sZXR0ZXI7CitzdGF0aWMgY29uc3QgY2hhciAqY29uZmlnX291dHB1dF9kaXJlY3Rvcnk7CitzdGF0aWMgZW51bSBjb3Zlcl9mcm9tX2Rlc2NyaXB0aW9uIGNvdmVyX2Zyb21fZGVzY3JpcHRpb25fbW9kZSA9IENPVkVSX0ZST01fTUVTU0FHRTsKKworc3RhdGljIGVudW0gY292ZXJfZnJvbV9kZXNjcmlwdGlvbiBwYXJzZV9jb3Zlcl9mcm9tX2Rlc2NyaXB0aW9uKGNvbnN0IGNoYXIgKmFyZykKK3sKKwlpZiAoIWFyZyB8fCAhc3RyY21wKGFyZywgImRlZmF1bHQiKSkKKwkJcmV0dXJuIENPVkVSX0ZST01fTUVTU0FHRTsKKwllbHNlIGlmICghc3RyY21wKGFyZywgIm5vbmUiKSkKKwkJcmV0dXJuIENPVkVSX0ZST01fTk9ORTsKKwllbHNlIGlmICghc3RyY21wKGFyZywgIm1lc3NhZ2UiKSkKKwkJcmV0dXJuIENPVkVSX0ZST01fTUVTU0FHRTsKKwllbHNlIGlmICghc3RyY21wKGFyZywgInN1YmplY3QiKSkKKwkJcmV0dXJuIENPVkVSX0ZST01fU1VCSkVDVDsKKwllbHNlIGlmICghc3RyY21wKGFyZywgImF1dG8iKSkKKwkJcmV0dXJuIENPVkVSX0ZST01fQVVUTzsKKwllbHNlCisJCWRpZShfKCIlczogaW52YWxpZCBjb3ZlciBmcm9tIGRlc2NyaXB0aW9uIG1vZGUiKSwgYXJnKTsKK30KKwogc3RhdGljIGludCBnaXRfZm9ybWF0X2NvbmZpZyhjb25zdCBjaGFyICp2YXIsIGNvbnN0IGNoYXIgKnZhbHVlLCB2b2lkICpjYikKIHsKIAlzdHJ1Y3QgcmV2X2luZm8gKnJldiA9IGNiOwpAQCAtODM2LDcgKzg2NSw3IEBACiAJCQl0aHJlYWQgPSBUSFJFQURfU0hBTExPVzsKIAkJCXJldHVybiAwOwogCQl9Ci0JCXRocmVhZCA9IGdpdF9jb25maWdfYm9vbCh2YXIsIHZhbHVlKSAmJiBUSFJFQURfU0hBTExPVzsKKwkJdGhyZWFkID0gZ2l0X2NvbmZpZ19ib29sKHZhciwgdmFsdWUpID8gVEhSRUFEX1NIQUxMT1cgOiBUSFJFQURfVU5TRVQ7CiAJCXJldHVybiAwOwogCX0KIAlpZiAoIXN0cmNtcCh2YXIsICJmb3JtYXQuc2lnbm9mZiIpKSB7CkBAIC04ODgsNiArOTE3LDEwIEBACiAJCX0KIAkJcmV0dXJuIDA7CiAJfQorCWlmICghc3RyY21wKHZhciwgImZvcm1hdC5jb3ZlcmZyb21kZXNjcmlwdGlvbiIpKSB7CisJCWNvdmVyX2Zyb21fZGVzY3JpcHRpb25fbW9kZSA9IHBhcnNlX2NvdmVyX2Zyb21fZGVzY3JpcHRpb24odmFsdWUpOworCQlyZXR1cm4gMDsKKwl9CiAKIAlyZXR1cm4gZ2l0X2xvZ19jb25maWcodmFyLCB2YWx1ZSwgY2IpOwogfQpAQCAtOTk0LDIwICsxMDI3LDYgQEAKIAlwdXRjKCdcbicsIGZpbGUpOwogfQogCi1zdGF0aWMgdm9pZCBhZGRfYnJhbmNoX2Rlc2NyaXB0aW9uKHN0cnVjdCBzdHJidWYgKmJ1ZiwgY29uc3QgY2hhciAqYnJhbmNoX25hbWUpCi17Ci0Jc3RydWN0IHN0cmJ1ZiBkZXNjID0gU1RSQlVGX0lOSVQ7Ci0JaWYgKCFicmFuY2hfbmFtZSB8fCAhKmJyYW5jaF9uYW1lKQotCQlyZXR1cm47Ci0JcmVhZF9icmFuY2hfZGVzYygmZGVzYywgYnJhbmNoX25hbWUpOwotCWlmIChkZXNjLmxlbikgewotCQlzdHJidWZfYWRkY2goYnVmLCAnXG4nKTsKLQkJc3RyYnVmX2FkZGJ1ZihidWYsICZkZXNjKTsKLQkJc3RyYnVmX2FkZGNoKGJ1ZiwgJ1xuJyk7Ci0JfQotCXN0cmJ1Zl9yZWxlYXNlKCZkZXNjKTsKLX0KLQogc3RhdGljIGNoYXIgKmZpbmRfYnJhbmNoX25hbWUoc3RydWN0IHJldl9pbmZvICpyZXYpCiB7CiAJaW50IGksIHBvc2l0aXZlID0gLTE7CkBAIC0xMDU0LDYgKzEwNzMsNDQgQEAKIAlmcHJpbnRmKHJldi0+ZGlmZm9wdC5maWxlLCAiXG4iKTsKIH0KIAorc3RhdGljIHZvaWQgcHJlcGFyZV9jb3Zlcl90ZXh0KHN0cnVjdCBwcmV0dHlfcHJpbnRfY29udGV4dCAqcHAsCisJCQkgICAgICAgY29uc3QgY2hhciAqYnJhbmNoX25hbWUsCisJCQkgICAgICAgc3RydWN0IHN0cmJ1ZiAqc2IsCisJCQkgICAgICAgY29uc3QgY2hhciAqZW5jb2RpbmcsCisJCQkgICAgICAgaW50IG5lZWRfOGJpdF9jdGUpCit7CisJY29uc3QgY2hhciAqc3ViamVjdCA9ICIqKiogU1VCSkVDVCBIRVJFICoqKiI7CisJY29uc3QgY2hhciAqYm9keSA9ICIqKiogQkxVUkIgSEVSRSAqKioiOworCXN0cnVjdCBzdHJidWYgZGVzY3JpcHRpb25fc2IgPSBTVFJCVUZfSU5JVDsKKwlzdHJ1Y3Qgc3RyYnVmIHN1YmplY3Rfc2IgPSBTVFJCVUZfSU5JVDsKKworCWlmIChjb3Zlcl9mcm9tX2Rlc2NyaXB0aW9uX21vZGUgPT0gQ09WRVJfRlJPTV9OT05FKQorCQlnb3RvIGRvX3BwOworCisJaWYgKGJyYW5jaF9uYW1lICYmICpicmFuY2hfbmFtZSkKKwkJcmVhZF9icmFuY2hfZGVzYygmZGVzY3JpcHRpb25fc2IsIGJyYW5jaF9uYW1lKTsKKwlpZiAoIWRlc2NyaXB0aW9uX3NiLmxlbikKKwkJZ290byBkb19wcDsKKworCWlmIChjb3Zlcl9mcm9tX2Rlc2NyaXB0aW9uX21vZGUgPT0gQ09WRVJfRlJPTV9TVUJKRUNUIHx8CisJCQljb3Zlcl9mcm9tX2Rlc2NyaXB0aW9uX21vZGUgPT0gQ09WRVJfRlJPTV9BVVRPKQorCQlib2R5ID0gZm9ybWF0X3N1YmplY3QoJnN1YmplY3Rfc2IsIGRlc2NyaXB0aW9uX3NiLmJ1ZiwgIiAiKTsKKworCWlmIChjb3Zlcl9mcm9tX2Rlc2NyaXB0aW9uX21vZGUgPT0gQ09WRVJfRlJPTV9NRVNTQUdFIHx8CisJCQkoY292ZXJfZnJvbV9kZXNjcmlwdGlvbl9tb2RlID09IENPVkVSX0ZST01fQVVUTyAmJgorCQkJIHN1YmplY3Rfc2IubGVuID4gQ09WRVJfRlJPTV9BVVRPX01BWF9TVUJKRUNUX0xFTikpCisJCWJvZHkgPSBkZXNjcmlwdGlvbl9zYi5idWY7CisJZWxzZQorCQlzdWJqZWN0ID0gc3ViamVjdF9zYi5idWY7CisKK2RvX3BwOgorCXBwX3RpdGxlX2xpbmUocHAsICZzdWJqZWN0LCBzYiwgZW5jb2RpbmcsIG5lZWRfOGJpdF9jdGUpOworCXBwX3JlbWFpbmRlcihwcCwgJmJvZHksIHNiLCAwKTsKKworCXN0cmJ1Zl9yZWxlYXNlKCZkZXNjcmlwdGlvbl9zYik7CisJc3RyYnVmX3JlbGVhc2UoJnN1YmplY3Rfc2IpOworfQorCiBzdGF0aWMgdm9pZCBtYWtlX2NvdmVyX2xldHRlcihzdHJ1Y3QgcmV2X2luZm8gKnJldiwgaW50IHVzZV9zdGRvdXQsCiAJCQkgICAgICBzdHJ1Y3QgY29tbWl0ICpvcmlnaW4sCiAJCQkgICAgICBpbnQgbnIsIHN0cnVjdCBjb21taXQgKipsaXN0LApAQCAtMTA2MSw4ICsxMTE4LDYgQEAKIAkJCSAgICAgIGludCBxdWlldCkKIHsKIAljb25zdCBjaGFyICpjb21taXR0ZXI7Ci0JY29uc3QgY2hhciAqYm9keSA9ICIqKiogU1VCSkVDVCBIRVJFICoqKlxuXG4qKiogQkxVUkIgSEVSRSAqKipcbiI7Ci0JY29uc3QgY2hhciAqbXNnOwogCXN0cnVjdCBzaG9ydGxvZyBsb2c7CiAJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCWludCBpOwpAQCAtMTA5MiwxNSArMTE0NywxMiBAQAogCWlmICghYnJhbmNoX25hbWUpCiAJCWJyYW5jaF9uYW1lID0gZmluZF9icmFuY2hfbmFtZShyZXYpOwogCi0JbXNnID0gYm9keTsKIAlwcC5mbXQgPSBDTUlUX0ZNVF9FTUFJTDsKIAlwcC5kYXRlX21vZGUudHlwZSA9IERBVEVfUkZDMjgyMjsKIAlwcC5yZXYgPSByZXY7CiAJcHAucHJpbnRfZW1haWxfc3ViamVjdCA9IDE7CiAJcHBfdXNlcl9pbmZvKCZwcCwgTlVMTCwgJnNiLCBjb21taXR0ZXIsIGVuY29kaW5nKTsKLQlwcF90aXRsZV9saW5lKCZwcCwgJm1zZywgJnNiLCBlbmNvZGluZywgbmVlZF84Yml0X2N0ZSk7Ci0JcHBfcmVtYWluZGVyKCZwcCwgJm1zZywgJnNiLCAwKTsKLQlhZGRfYnJhbmNoX2Rlc2NyaXB0aW9uKCZzYiwgYnJhbmNoX25hbWUpOworCXByZXBhcmVfY292ZXJfdGV4dCgmcHAsIGJyYW5jaF9uYW1lLCAmc2IsIGVuY29kaW5nLCBuZWVkXzhiaXRfY3RlKTsKIAlmcHJpbnRmKHJldi0+ZGlmZm9wdC5maWxlLCAiJXNcbiIsIHNiLmJ1Zik7CiAKIAlzdHJidWZfcmVsZWFzZSgmc2IpOwpAQCAtMTI0OSw5ICsxMzAxLDkgQEAKIAogc3RhdGljIGludCB0aHJlYWRfY2FsbGJhY2soY29uc3Qgc3RydWN0IG9wdGlvbiAqb3B0LCBjb25zdCBjaGFyICphcmcsIGludCB1bnNldCkKIHsKLQlpbnQgKnRocmVhZCA9IChpbnQgKilvcHQtPnZhbHVlOworCWVudW0gdGhyZWFkX2xldmVsICp0aHJlYWQgPSAoZW51bSB0aHJlYWRfbGV2ZWwgKilvcHQtPnZhbHVlOwogCWlmICh1bnNldCkKLQkJKnRocmVhZCA9IDA7CisJCSp0aHJlYWQgPSBUSFJFQURfVU5TRVQ7CiAJZWxzZSBpZiAoIWFyZyB8fCAhc3RyY21wKGFyZywgInNoYWxsb3ciKSkKIAkJKnRocmVhZCA9IFRIUkVBRF9TSEFMTE9XOwogCWVsc2UgaWYgKCFzdHJjbXAoYXJnLCAiZGVlcCIpKQpAQCAtMTU0Miw2ICsxNTk0LDcgQEAKIAlpbnQgdXNlX3BhdGNoX2Zvcm1hdCA9IDA7CiAJaW50IHF1aWV0ID0gMDsKIAlpbnQgcmVyb2xsX2NvdW50ID0gLTE7CisJY2hhciAqY292ZXJfZnJvbV9kZXNjcmlwdGlvbl9hcmcgPSBOVUxMOwogCWNoYXIgKmJyYW5jaF9uYW1lID0gTlVMTDsKIAljaGFyICpiYXNlX2NvbW1pdCA9IE5VTEw7CiAJc3RydWN0IGJhc2VfdHJlZV9pbmZvIGJhc2VzOwpAQCAtMTU3OCw2ICsxNjMxLDkgQEAKIAkJeyBPUFRJT05fQ0FMTEJBQ0ssIDAsICJyZmMiLCAmcmV2LCBOVUxMLAogCQkJICAgIE5fKCJVc2UgW1JGQyBQQVRDSF0gaW5zdGVhZCBvZiBbUEFUQ0hdIiksCiAJCQkgICAgUEFSU0VfT1BUX05PQVJHIHwgUEFSU0VfT1BUX05PTkVHLCByZmNfY2FsbGJhY2sgfSwKKwkJT1BUX1NUUklORygwLCAiY292ZXItZnJvbS1kZXNjcmlwdGlvbiIsICZjb3Zlcl9mcm9tX2Rlc2NyaXB0aW9uX2FyZywKKwkJCSAgICBOXygiY292ZXItZnJvbS1kZXNjcmlwdGlvbi1tb2RlIiksCisJCQkgICAgTl8oImdlbmVyYXRlIHBhcnRzIG9mIGEgY292ZXIgbGV0dGVyIGJhc2VkIG9uIGEgYnJhbmNoJ3MgZGVzY3JpcHRpb24iKSksCiAJCXsgT1BUSU9OX0NBTExCQUNLLCAwLCAic3ViamVjdC1wcmVmaXgiLCAmcmV2LCBOXygicHJlZml4IiksCiAJCQkgICAgTl8oIlVzZSBbPHByZWZpeD5dIGluc3RlYWQgb2YgW1BBVENIXSIpLAogCQkJICAgIFBBUlNFX09QVF9OT05FRywgc3ViamVjdF9wcmVmaXhfY2FsbGJhY2sgfSwKQEAgLTE2NjksNiArMTcyNSw5IEBACiAJCQkgICAgIFBBUlNFX09QVF9LRUVQX0FSR1YwIHwgUEFSU0VfT1BUX0tFRVBfVU5LTk9XTiB8CiAJCQkgICAgIFBBUlNFX09QVF9LRUVQX0RBU0hEQVNIKTsKIAorCWlmIChjb3Zlcl9mcm9tX2Rlc2NyaXB0aW9uX2FyZykKKwkJY292ZXJfZnJvbV9kZXNjcmlwdGlvbl9tb2RlID0gcGFyc2VfY292ZXJfZnJvbV9kZXNjcmlwdGlvbihjb3Zlcl9mcm9tX2Rlc2NyaXB0aW9uX2FyZyk7CisKIAlpZiAoMCA8IHJlcm9sbF9jb3VudCkgewogCQlzdHJ1Y3Qgc3RyYnVmIHNwcmVmaXggPSBTVFJCVUZfSU5JVDsKIAkJc3RyYnVmX2FkZGYoJnNwcmVmaXgsICIlcyB2JWQiLApkaWZmIC0tZ2l0IGEvYnVpbHRpbi9tdWx0aS1wYWNrLWluZGV4LmMgYi9idWlsdGluL211bHRpLXBhY2staW5kZXguYwppbmRleCBiMWVhMWE2Li41YmY4OGNkIDEwMDY0NAotLS0gYS9idWlsdGluL211bHRpLXBhY2staW5kZXguYworKysgYi9idWlsdGluL211bHRpLXBhY2staW5kZXguYwpAQCAtNiwyMSArNiwyNSBAQAogI2luY2x1ZGUgInRyYWNlMi5oIgogCiBzdGF0aWMgY2hhciBjb25zdCAqIGNvbnN0IGJ1aWx0aW5fbXVsdGlfcGFja19pbmRleF91c2FnZVtdID0gewotCU5fKCJnaXQgbXVsdGktcGFjay1pbmRleCBbLS1vYmplY3QtZGlyPTxkaXI+XSAod3JpdGV8dmVyaWZ5fGV4cGlyZXxyZXBhY2sgLS1iYXRjaC1zaXplPTxzaXplPikiKSwKKwlOXygiZ2l0IG11bHRpLXBhY2staW5kZXggWzxvcHRpb25zPl0gKHdyaXRlfHZlcmlmeXxleHBpcmV8cmVwYWNrIC0tYmF0Y2gtc2l6ZT08c2l6ZT4pIiksCiAJTlVMTAogfTsKIAogc3RhdGljIHN0cnVjdCBvcHRzX211bHRpX3BhY2tfaW5kZXggewogCWNvbnN0IGNoYXIgKm9iamVjdF9kaXI7CiAJdW5zaWduZWQgbG9uZyBiYXRjaF9zaXplOworCWludCBwcm9ncmVzczsKIH0gb3B0czsKIAogaW50IGNtZF9tdWx0aV9wYWNrX2luZGV4KGludCBhcmdjLCBjb25zdCBjaGFyICoqYXJndiwKIAkJCSBjb25zdCBjaGFyICpwcmVmaXgpCiB7CisJdW5zaWduZWQgZmxhZ3MgPSAwOworCiAJc3RhdGljIHN0cnVjdCBvcHRpb24gYnVpbHRpbl9tdWx0aV9wYWNrX2luZGV4X29wdGlvbnNbXSA9IHsKIAkJT1BUX0ZJTEVOQU1FKDAsICJvYmplY3QtZGlyIiwgJm9wdHMub2JqZWN0X2RpciwKIAkJICBOXygib2JqZWN0IGRpcmVjdG9yeSBjb250YWluaW5nIHNldCBvZiBwYWNrZmlsZSBhbmQgcGFjay1pbmRleCBwYWlycyIpKSwKKwkJT1BUX0JPT0woMCwgInByb2dyZXNzIiwgJm9wdHMucHJvZ3Jlc3MsIE5fKCJmb3JjZSBwcm9ncmVzcyByZXBvcnRpbmciKSksCiAJCU9QVF9NQUdOSVRVREUoMCwgImJhdGNoLXNpemUiLCAmb3B0cy5iYXRjaF9zaXplLAogCQkgIE5fKCJkdXJpbmcgcmVwYWNrLCBjb2xsZWN0IHBhY2stZmlsZXMgb2Ygc21hbGxlciBzaXplIGludG8gYSBiYXRjaCB0aGF0IGlzIGxhcmdlciB0aGFuIHRoaXMgc2l6ZSIpKSwKIAkJT1BUX0VORCgpLApAQCAtMjgsMTIgKzMyLDE1IEBACiAKIAlnaXRfY29uZmlnKGdpdF9kZWZhdWx0X2NvbmZpZywgTlVMTCk7CiAKKwlvcHRzLnByb2dyZXNzID0gaXNhdHR5KDIpOwogCWFyZ2MgPSBwYXJzZV9vcHRpb25zKGFyZ2MsIGFyZ3YsIHByZWZpeCwKIAkJCSAgICAgYnVpbHRpbl9tdWx0aV9wYWNrX2luZGV4X29wdGlvbnMsCiAJCQkgICAgIGJ1aWx0aW5fbXVsdGlfcGFja19pbmRleF91c2FnZSwgMCk7CiAKIAlpZiAoIW9wdHMub2JqZWN0X2RpcikKIAkJb3B0cy5vYmplY3RfZGlyID0gZ2V0X29iamVjdF9kaXJlY3RvcnkoKTsKKwlpZiAob3B0cy5wcm9ncmVzcykKKwkJZmxhZ3MgfD0gTUlEWF9QUk9HUkVTUzsKIAogCWlmIChhcmdjID09IDApCiAJCXVzYWdlX3dpdGhfb3B0aW9ucyhidWlsdGluX211bHRpX3BhY2tfaW5kZXhfdXNhZ2UsCkBAIC00NywxNiArNTQsMTcgQEAKIAl0cmFjZTJfY21kX21vZGUoYXJndlswXSk7CiAKIAlpZiAoIXN0cmNtcChhcmd2WzBdLCAicmVwYWNrIikpCi0JCXJldHVybiBtaWR4X3JlcGFjayh0aGVfcmVwb3NpdG9yeSwgb3B0cy5vYmplY3RfZGlyLCAoc2l6ZV90KW9wdHMuYmF0Y2hfc2l6ZSk7CisJCXJldHVybiBtaWR4X3JlcGFjayh0aGVfcmVwb3NpdG9yeSwgb3B0cy5vYmplY3RfZGlyLAorCQkJKHNpemVfdClvcHRzLmJhdGNoX3NpemUsIGZsYWdzKTsKIAlpZiAob3B0cy5iYXRjaF9zaXplKQogCQlkaWUoXygiLS1iYXRjaC1zaXplIG9wdGlvbiBpcyBvbmx5IGZvciAncmVwYWNrJyBzdWJjb21tYW5kIikpOwogCiAJaWYgKCFzdHJjbXAoYXJndlswXSwgIndyaXRlIikpCi0JCXJldHVybiB3cml0ZV9taWR4X2ZpbGUob3B0cy5vYmplY3RfZGlyKTsKKwkJcmV0dXJuIHdyaXRlX21pZHhfZmlsZShvcHRzLm9iamVjdF9kaXIsIGZsYWdzKTsKIAlpZiAoIXN0cmNtcChhcmd2WzBdLCAidmVyaWZ5IikpCi0JCXJldHVybiB2ZXJpZnlfbWlkeF9maWxlKHRoZV9yZXBvc2l0b3J5LCBvcHRzLm9iamVjdF9kaXIpOworCQlyZXR1cm4gdmVyaWZ5X21pZHhfZmlsZSh0aGVfcmVwb3NpdG9yeSwgb3B0cy5vYmplY3RfZGlyLCBmbGFncyk7CiAJaWYgKCFzdHJjbXAoYXJndlswXSwgImV4cGlyZSIpKQotCQlyZXR1cm4gZXhwaXJlX21pZHhfcGFja3ModGhlX3JlcG9zaXRvcnksIG9wdHMub2JqZWN0X2Rpcik7CisJCXJldHVybiBleHBpcmVfbWlkeF9wYWNrcyh0aGVfcmVwb3NpdG9yeSwgb3B0cy5vYmplY3RfZGlyLCBmbGFncyk7CiAKIAlkaWUoXygidW5yZWNvZ25pemVkIHN1YmNvbW1hbmQ6ICVzIiksIGFyZ3ZbMF0pOwogfQpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9ub3Rlcy5jIGIvYnVpbHRpbi9ub3Rlcy5jCmluZGV4IDAyZTk3ZjUuLjk1NDU2ZjMgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vbm90ZXMuYworKysgYi9idWlsdGluL25vdGVzLmMKQEAgLTUxMyw3ICs1MTMsNyBAQAogCQl9CiAJfQogCi0JaWYgKGFyZ2MgPCAyKSB7CisJaWYgKGFyZ2MgPCAxKSB7CiAJCWVycm9yKF8oInRvbyBmZXcgcGFyYW1ldGVycyIpKTsKIAkJdXNhZ2Vfd2l0aF9vcHRpb25zKGdpdF9ub3Rlc19jb3B5X3VzYWdlLCBvcHRpb25zKTsKIAl9CmRpZmYgLS1naXQgYS9idWlsdGluL3BhY2stb2JqZWN0cy5jIGIvYnVpbHRpbi9wYWNrLW9iamVjdHMuYwppbmRleCA1ODc2NTgzLi4zOTNjMjBhIDEwMDY0NAotLS0gYS9idWlsdGluL3BhY2stb2JqZWN0cy5jCisrKyBiL2J1aWx0aW4vcGFjay1vYmplY3RzLmMKQEAgLTE2Myw3ICsxNjMsNyBAQAogCWRlbHRhX2J1ZiA9IGRpZmZfZGVsdGEoYmFzZV9idWYsIGJhc2Vfc2l6ZSwKIAkJCSAgICAgICBidWYsIHNpemUsICZkZWx0YV9zaXplLCAwKTsKIAkvKgotCSAqIFdlIHN1Y2Nlc2Z1bGx5IGNvbXB1dGVkIHRoaXMgZGVsdGEgb25jZSBidXQgZHJvcHBlZCBpdCBmb3IKKwkgKiBXZSBzdWNjZXNzZnVsbHkgY29tcHV0ZWQgdGhpcyBkZWx0YSBvbmNlIGJ1dCBkcm9wcGVkIGl0IGZvcgogCSAqIG1lbW9yeSByZWFzb25zLiBTb21ldGhpbmcgaXMgdmVyeSB3cm9uZyBpZiB0aGlzIHRpbWUgd2UKIAkgKiByZWNvbXB1dGUgYW5kIGNyZWF0ZSBhIGRpZmZlcmVudCBkZWx0YS4KIAkgKi8KZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmViYXNlLmMgYi9idWlsdGluL3JlYmFzZS5jCmluZGV4IDRhMjA1ODIuLmU3NTUwODcgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcmViYXNlLmMKKysrIGIvYnVpbHRpbi9yZWJhc2UuYwpAQCAtMTQ3MSw5ICsxNDcxLDEwIEBACiAJCQlOXygibGV0IHRoZSB1c2VyIGVkaXQgdGhlIGxpc3Qgb2YgY29tbWl0cyB0byByZWJhc2UiKSwKIAkJCVBBUlNFX09QVF9OT0FSRyB8IFBBUlNFX09QVF9OT05FRywKIAkJCXBhcnNlX29wdF9pbnRlcmFjdGl2ZSB9LAotCQlPUFRfU0VUX0lOVCgncCcsICJwcmVzZXJ2ZS1tZXJnZXMiLCAmb3B0aW9ucy50eXBlLAotCQkJICAgIE5fKCIoREVQUkVDQVRFRCkgdHJ5IHRvIHJlY3JlYXRlIG1lcmdlcyBpbnN0ZWFkIG9mICIKLQkJCSAgICAgICAiaWdub3JpbmcgdGhlbSIpLCBSRUJBU0VfUFJFU0VSVkVfTUVSR0VTKSwKKwkJT1BUX1NFVF9JTlRfRigncCcsICJwcmVzZXJ2ZS1tZXJnZXMiLCAmb3B0aW9ucy50eXBlLAorCQkJICAgICAgTl8oIihERVBSRUNBVEVEKSB0cnkgdG8gcmVjcmVhdGUgbWVyZ2VzIGluc3RlYWQgb2YgIgorCQkJCSAiaWdub3JpbmcgdGhlbSIpLAorCQkJICAgICAgUkVCQVNFX1BSRVNFUlZFX01FUkdFUywgUEFSU0VfT1BUX0hJRERFTiksCiAJCU9QVF9SRVJFUkVfQVVUT1VQREFURSgmb3B0aW9ucy5hbGxvd19yZXJlcmVfYXV0b3VwZGF0ZSksCiAJCU9QVF9CT09MKCdrJywgImtlZXAtZW1wdHkiLCAmb3B0aW9ucy5rZWVwX2VtcHR5LAogCQkJIE5fKCJwcmVzZXJ2ZSBlbXB0eSBjb21taXRzIGR1cmluZyByZWJhc2UiKSksCmRpZmYgLS1naXQgYS9idWlsdGluL3JlcGFjay5jIGIvYnVpbHRpbi9yZXBhY2suYwppbmRleCAwOTRjMmY4Li4wNzgxNzYzIDEwMDY0NAotLS0gYS9idWlsdGluL3JlcGFjay5jCisrKyBiL2J1aWx0aW4vcmVwYWNrLmMKQEAgLTIzMyw2ICsyMzMsMTMgQEAKIAkJLyoKIAkJICogcGFjay1vYmplY3RzIGNyZWF0ZXMgdGhlIC5wYWNrIGFuZCAuaWR4IGZpbGVzLCBidXQgbm90IHRoZQogCQkgKiAucHJvbWlzb3IgZmlsZS4gQ3JlYXRlIHRoZSAucHJvbWlzb3IgZmlsZSwgd2hpY2ggaXMgZW1wdHkuCisJCSAqCisJCSAqIE5FRURTV09SSzogZmV0Y2gtcGFjayBzb21ldGltZXMgZ2VuZXJhdGVzIG5vbi1lbXB0eQorCQkgKiAucHJvbWlzb3IgZmlsZXMgY29udGFpbmluZyB0aGUgcmVmIG5hbWVzIGFuZCBhc3NvY2lhdGVkCisJCSAqIGhhc2hlcyBhdCB0aGUgcG9pbnQgb2YgZ2VuZXJhdGlvbiBvZiB0aGUgY29ycmVzcG9uZGluZworCQkgKiBwYWNrZmlsZSwgYnV0IHRoaXMgd291bGQgbm90IHByZXNlcnZlIHRoZWlyIGNvbnRlbnRzLiBNYXliZQorCQkgKiBjb25jYXRlbmF0ZSB0aGUgY29udGVudHMgb2YgYWxsIC5wcm9taXNvciBmaWxlcyBpbnN0ZWFkIG9mCisJCSAqIGp1c3QgY3JlYXRpbmcgYSBuZXcgZW1wdHkgZmlsZS4KIAkJICovCiAJCXByb21pc29yX25hbWUgPSBta3BhdGhkdXAoIiVzLSVzLnByb21pc29yIiwgcGFja3RtcCwKIAkJCQkJICBsaW5lLmJ1Zik7CkBAIC01NjIsNyArNTY5LDcgQEAKIAlyZW1vdmVfdGVtcG9yYXJ5X2ZpbGVzKCk7CiAKIAlpZiAoZ2l0X2Vudl9ib29sKEdJVF9URVNUX01VTFRJX1BBQ0tfSU5ERVgsIDApKQotCQl3cml0ZV9taWR4X2ZpbGUoZ2V0X29iamVjdF9kaXJlY3RvcnkoKSk7CisJCXdyaXRlX21pZHhfZmlsZShnZXRfb2JqZWN0X2RpcmVjdG9yeSgpLCAwKTsKIAogCXN0cmluZ19saXN0X2NsZWFyKCZuYW1lcywgMCk7CiAJc3RyaW5nX2xpc3RfY2xlYXIoJnJvbGxiYWNrLCAwKTsKZGlmZiAtLWdpdCBhL2J1aWx0aW4vcmV2LXBhcnNlLmMgYi9idWlsdGluL3Jldi1wYXJzZS5jCmluZGV4IDMwOGM2N2UuLjg1Y2UyMDkgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vcmV2LXBhcnNlLmMKKysrIGIvYnVpbHRpbi9yZXYtcGFyc2UuYwpAQCAtOTE5LDYgKzkxOSwxNyBAQAogCQkJCXNob3dfZGF0ZXN0cmluZygiLS1taW4tYWdlPSIsIGFyZyk7CiAJCQkJY29udGludWU7CiAJCQl9CisJCQlpZiAob3B0X3dpdGhfdmFsdWUoYXJnLCAiLS1zaG93LW9iamVjdC1mb3JtYXQiLCAmYXJnKSkgeworCQkJCWNvbnN0IGNoYXIgKnZhbCA9IGFyZyA/IGFyZyA6ICJzdG9yYWdlIjsKKworCQkJCWlmIChzdHJjbXAodmFsLCAic3RvcmFnZSIpICYmCisJCQkJICAgIHN0cmNtcCh2YWwsICJpbnB1dCIpICYmCisJCQkJICAgIHN0cmNtcCh2YWwsICJvdXRwdXQiKSkKKwkJCQkJZGllKCJ1bmtub3duIG1vZGUgZm9yIC0tc2hvdy1vYmplY3QtZm9ybWF0OiAlcyIsCisJCQkJCSAgICBhcmcpOworCQkJCXB1dHModGhlX2hhc2hfYWxnby0+bmFtZSk7CisJCQkJY29udGludWU7CisJCQl9CiAJCQlpZiAoc2hvd19mbGFnKGFyZykgJiYgdmVyaWZ5KQogCQkJCWRpZV9ub19zaW5nbGVfcmV2KHF1aWV0KTsKIAkJCWNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvYnVpbHRpbi9zdGFzaC5jIGIvYnVpbHRpbi9zdGFzaC5jCmluZGV4IDRlODA2MTcuLjRhZDNhZGYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vc3Rhc2guYworKysgYi9idWlsdGluL3N0YXNoLmMKQEAgLTQ4MywxMyArNDgzLDEyIEBACiAJCWlmIChyZXQpCiAJCQlyZXR1cm4gLTE7CiAKKwkJLyogcmVhZCBiYWNrIHRoZSByZXN1bHQgb2YgdXBkYXRlX2luZGV4KCkgYmFjayBmcm9tIHRoZSBkaXNrICovCiAJCWRpc2NhcmRfY2FjaGUoKTsKKwkJcmVhZF9jYWNoZSgpOwogCX0KIAotCWlmIChxdWlldCkgewotCQlpZiAocmVmcmVzaF9hbmRfd3JpdGVfY2FjaGUoUkVGUkVTSF9RVUlFVCwgMCwgMCkpCi0JCQl3YXJuaW5nKCJjb3VsZCBub3QgcmVmcmVzaCBpbmRleCIpOwotCX0gZWxzZSB7CisJaWYgKCFxdWlldCkgewogCQlzdHJ1Y3QgY2hpbGRfcHJvY2VzcyBjcCA9IENISUxEX1BST0NFU1NfSU5JVDsKIAogCQkvKgpAQCAtMTA4OCw4ICsxMDg3LDkgQEAKIAl9CiAKIAljcF91cGRfaW5kZXguZ2l0X2NtZCA9IDE7Ci0JYXJndl9hcnJheV9wdXNobCgmY3BfdXBkX2luZGV4LmFyZ3MsICJ1cGRhdGUtaW5kZXgiLCAiLXoiLCAiLS1hZGQiLAotCQkJICItLXJlbW92ZSIsICItLXN0ZGluIiwgTlVMTCk7CisJYXJndl9hcnJheV9wdXNobCgmY3BfdXBkX2luZGV4LmFyZ3MsICJ1cGRhdGUtaW5kZXgiLAorCQkJICItLWlnbm9yZS1za2lwLXdvcmt0cmVlLWVudHJpZXMiLAorCQkJICIteiIsICItLWFkZCIsICItLXJlbW92ZSIsICItLXN0ZGluIiwgTlVMTCk7CiAJYXJndl9hcnJheV9wdXNoZigmY3BfdXBkX2luZGV4LmVudl9hcnJheSwgIkdJVF9JTkRFWF9GSUxFPSVzIiwKIAkJCSBzdGFzaF9pbmRleF9wYXRoLmJ1Zik7CiAKZGlmZiAtLWdpdCBhL2J1aWx0aW4vdXBkYXRlLWluZGV4LmMgYi9idWlsdGluL3VwZGF0ZS1pbmRleC5jCmluZGV4IDQ5MzAyZDkuLmQ1MjdiOGYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vdXBkYXRlLWluZGV4LmMKKysrIGIvYnVpbHRpbi91cGRhdGUtaW5kZXguYwpAQCAtMzUsNiArMzUsNyBAQAogc3RhdGljIGludCBtYXJrX3ZhbGlkX29ubHk7CiBzdGF0aWMgaW50IG1hcmtfc2tpcF93b3JrdHJlZV9vbmx5Owogc3RhdGljIGludCBtYXJrX2ZzbW9uaXRvcl9vbmx5Oworc3RhdGljIGludCBpZ25vcmVfc2tpcF93b3JrdHJlZV9lbnRyaWVzOwogI2RlZmluZSBNQVJLX0ZMQUcgMQogI2RlZmluZSBVTk1BUktfRkxBRyAyCiBzdGF0aWMgc3RydWN0IHN0cmJ1ZiBtdGltZV9kaXIgPSBTVFJCVUZfSU5JVDsKQEAgLTM4MSw3ICszODIsOCBAQAogCQkgKiBzbyB1cGRhdGluZyBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlLgogCQkgKiBPbiB0aGUgb3RoZXIgaGFuZCwgcmVtb3ZpbmcgaXQgZnJvbSBpbmRleCBzaG91bGQgd29yawogCQkgKi8KLQkJaWYgKGFsbG93X3JlbW92ZSAmJiByZW1vdmVfZmlsZV9mcm9tX2NhY2hlKHBhdGgpKQorCQlpZiAoIWlnbm9yZV9za2lwX3dvcmt0cmVlX2VudHJpZXMgJiYgYWxsb3dfcmVtb3ZlICYmCisJCSAgICByZW1vdmVfZmlsZV9mcm9tX2NhY2hlKHBhdGgpKQogCQkJcmV0dXJuIGVycm9yKCIlczogY2Fubm90IHJlbW92ZSBmcm9tIHRoZSBpbmRleCIsIHBhdGgpOwogCQlyZXR1cm4gMDsKIAl9CkBAIC0xMDE0LDYgKzEwMTYsOCBAQAogCQl7T1BUSU9OX1NFVF9JTlQsIDAsICJuby1za2lwLXdvcmt0cmVlIiwgJm1hcmtfc2tpcF93b3JrdHJlZV9vbmx5LCBOVUxMLAogCQkJTl8oImNsZWFyIHNraXAtd29ya3RyZWUgYml0IiksCiAJCQlQQVJTRV9PUFRfTk9BUkcgfCBQQVJTRV9PUFRfTk9ORUcsIE5VTEwsIFVOTUFSS19GTEFHfSwKKwkJT1BUX0JPT0woMCwgImlnbm9yZS1za2lwLXdvcmt0cmVlLWVudHJpZXMiLCAmaWdub3JlX3NraXBfd29ya3RyZWVfZW50cmllcywKKwkJCSBOXygiZG8gbm90IHRvdWNoIGluZGV4LW9ubHkgZW50cmllcyIpKSwKIAkJT1BUX1NFVF9JTlQoMCwgImluZm8tb25seSIsICZpbmZvX29ubHksCiAJCQlOXygiYWRkIHRvIGluZGV4IG9ubHk7IGRvIG5vdCBhZGQgY29udGVudCB0byBvYmplY3QgZGF0YWJhc2UiKSwgMSksCiAJCU9QVF9TRVRfSU5UKDAsICJmb3JjZS1yZW1vdmUiLCAmZm9yY2VfcmVtb3ZlLApkaWZmIC0tZ2l0IGEvYnVpbHRpbi93b3JrdHJlZS5jIGIvYnVpbHRpbi93b3JrdHJlZS5jCmluZGV4IDRkZTQ0ZjUuLmQ2YmM1MjYgMTAwNjQ0Ci0tLSBhL2J1aWx0aW4vd29ya3RyZWUuYworKysgYi9idWlsdGluL3dvcmt0cmVlLmMKQEAgLTM3Niw3ICszNzYsNyBAQAogCWlmIChvcHRzLT5jaGVja291dCkgewogCQljcC5hcmd2ID0gTlVMTDsKIAkJYXJndl9hcnJheV9jbGVhcigmY3AuYXJncyk7Ci0JCWFyZ3ZfYXJyYXlfcHVzaGwoJmNwLmFyZ3MsICJyZXNldCIsICItLWhhcmQiLCBOVUxMKTsKKwkJYXJndl9hcnJheV9wdXNobCgmY3AuYXJncywgInJlc2V0IiwgIi0taGFyZCIsICItLW5vLXJlY3Vyc2Utc3VibW9kdWxlcyIsIE5VTEwpOwogCQlpZiAob3B0cy0+cXVpZXQpCiAJCQlhcmd2X2FycmF5X3B1c2goJmNwLmFyZ3MsICItLXF1aWV0Iik7CiAJCWNwLmVudiA9IGNoaWxkX2Vudi5hcmd2OwpkaWZmIC0tZ2l0IGEvYnVuZGxlLmMgYi9idW5kbGUuYwppbmRleCBhODVlZDNmLi45OTQzOWUwIDEwMDY0NAotLS0gYS9idW5kbGUuYworKysgYi9idW5kbGUuYwpAQCAtMjQ5LDE1ICsyNDksMTYgQEAKIAogCiAvKiBXcml0ZSB0aGUgcGFjayBkYXRhIHRvIGJ1bmRsZV9mZCAqLwotc3RhdGljIGludCB3cml0ZV9wYWNrX2RhdGEoaW50IGJ1bmRsZV9mZCwgc3RydWN0IHJldl9pbmZvICpyZXZzKQorc3RhdGljIGludCB3cml0ZV9wYWNrX2RhdGEoaW50IGJ1bmRsZV9mZCwgc3RydWN0IHJldl9pbmZvICpyZXZzLCBzdHJ1Y3QgYXJndl9hcnJheSAqcGFja19vcHRpb25zKQogewogCXN0cnVjdCBjaGlsZF9wcm9jZXNzIHBhY2tfb2JqZWN0cyA9IENISUxEX1BST0NFU1NfSU5JVDsKIAlpbnQgaTsKIAogCWFyZ3ZfYXJyYXlfcHVzaGwoJnBhY2tfb2JqZWN0cy5hcmdzLAotCQkJICJwYWNrLW9iamVjdHMiLCAiLS1hbGwtcHJvZ3Jlc3MtaW1wbGllZCIsCisJCQkgInBhY2stb2JqZWN0cyIsCiAJCQkgIi0tc3Rkb3V0IiwgIi0tdGhpbiIsICItLWRlbHRhLWJhc2Utb2Zmc2V0IiwKIAkJCSBOVUxMKTsKKwlhcmd2X2FycmF5X3B1c2h2KCZwYWNrX29iamVjdHMuYXJncywgcGFja19vcHRpb25zLT5hcmd2KTsKIAlwYWNrX29iamVjdHMuaW4gPSAtMTsKIAlwYWNrX29iamVjdHMub3V0ID0gYnVuZGxlX2ZkOwogCXBhY2tfb2JqZWN0cy5naXRfY21kID0gMTsKQEAgLTQyOCw3ICs0MjksNyBAQAogfQogCiBpbnQgY3JlYXRlX2J1bmRsZShzdHJ1Y3QgcmVwb3NpdG9yeSAqciwgY29uc3QgY2hhciAqcGF0aCwKLQkJICBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpCisJCSAgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2LCBzdHJ1Y3QgYXJndl9hcnJheSAqcGFja19vcHRpb25zKQogewogCXN0cnVjdCBsb2NrX2ZpbGUgbG9jayA9IExPQ0tfSU5JVDsKIAlpbnQgYnVuZGxlX2ZkID0gLTE7CkBAIC00NzAsNyArNDcxLDcgQEAKIAkJZ290byBlcnI7CiAKIAkvKiB3cml0ZSBwYWNrICovCi0JaWYgKHdyaXRlX3BhY2tfZGF0YShidW5kbGVfZmQsICZyZXZzKSkKKwlpZiAod3JpdGVfcGFja19kYXRhKGJ1bmRsZV9mZCwgJnJldnMsIHBhY2tfb3B0aW9ucykpCiAJCWdvdG8gZXJyOwogCiAJaWYgKCFidW5kbGVfdG9fc3Rkb3V0KSB7CmRpZmYgLS1naXQgYS9idW5kbGUuaCBiL2J1bmRsZS5oCmluZGV4IDM3YzM3ZDcuLmNlYWIwYzcgMTAwNjQ0Ci0tLSBhL2J1bmRsZS5oCisrKyBiL2J1bmRsZS5oCkBAIC0xLDYgKzEsNyBAQAogI2lmbmRlZiBCVU5ETEVfSAogI2RlZmluZSBCVU5ETEVfSAogCisjaW5jbHVkZSAiYXJndi1hcnJheS5oIgogI2luY2x1ZGUgImNhY2hlLmgiCiAKIHN0cnVjdCByZWZfbGlzdCB7CkBAIC0xOSw3ICsyMCw3IEBACiBpbnQgaXNfYnVuZGxlKGNvbnN0IGNoYXIgKnBhdGgsIGludCBxdWlldCk7CiBpbnQgcmVhZF9idW5kbGVfaGVhZGVyKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBidW5kbGVfaGVhZGVyICpoZWFkZXIpOwogaW50IGNyZWF0ZV9idW5kbGUoc3RydWN0IHJlcG9zaXRvcnkgKnIsIGNvbnN0IGNoYXIgKnBhdGgsCi0JCSAgaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKKwkJICBpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YsIHN0cnVjdCBhcmd2X2FycmF5ICpwYWNrX29wdGlvbnMpOwogaW50IHZlcmlmeV9idW5kbGUoc3RydWN0IHJlcG9zaXRvcnkgKnIsIHN0cnVjdCBidW5kbGVfaGVhZGVyICpoZWFkZXIsIGludCB2ZXJib3NlKTsKICNkZWZpbmUgQlVORExFX1ZFUkJPU0UgMQogaW50IHVuYnVuZGxlKHN0cnVjdCByZXBvc2l0b3J5ICpyLCBzdHJ1Y3QgYnVuZGxlX2hlYWRlciAqaGVhZGVyLApkaWZmIC0tZ2l0IGEvY2FjaGUuaCBiL2NhY2hlLmgKaW5kZXggMDRjYWJhYS4uNjQ2NjlhNCAxMDA2NDQKLS0tIGEvY2FjaGUuaAorKysgYi9jYWNoZS5oCkBAIC0xNDUxLDcgKzE0NTEsOCBAQAogaW50IGhleF90b19ieXRlcyh1bnNpZ25lZCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmhleCwgc2l6ZV90IGxlbik7CiAKIC8qCi0gKiBDb252ZXJ0IGEgYmluYXJ5IGhhc2ggdG8gaXRzIGhleCBlcXVpdmFsZW50LiBUaGUgYF9yYCB2YXJpYW50IGlzIHJlZW50cmFudCwKKyAqIENvbnZlcnQgYSBiaW5hcnkgaGFzaCBpbiAidW5zaWduZWQgY2hhciBbXSIgb3IgYW4gb2JqZWN0IG5hbWUgaW4KKyAqICJzdHJ1Y3Qgb2JqZWN0X2lkICoiIHRvIGl0cyBoZXggZXF1aXZhbGVudC4gVGhlIGBfcmAgdmFyaWFudCBpcyByZWVudHJhbnQsCiAgKiBhbmQgd3JpdGVzIHRoZSBOVUwtdGVybWluYXRlZCBvdXRwdXQgdG8gdGhlIGJ1ZmZlciBgb3V0YCwgd2hpY2ggbXVzdCBiZSBhdAogICogbGVhc3QgYEdJVF9NQVhfSEVYU1ogKyAxYCBieXRlcywgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIG91dCBmb3IKICAqIGNvbnZlbmllbmNlLgpAQCAtMTQ1OSwxMyArMTQ2MCwxMiBAQAogICogVGhlIG5vbi1gX3JgIHZhcmlhbnQgcmV0dXJucyBhIHN0YXRpYyBidWZmZXIsIGJ1dCB1c2VzIGEgcmluZyBvZiA0CiAgKiBidWZmZXJzLCBtYWtpbmcgaXQgc2FmZSB0byBtYWtlIG11bHRpcGxlIGNhbGxzIGZvciBhIHNpbmdsZSBzdGF0ZW1lbnQsIGxpa2U6CiAgKgotICogICBwcmludGYoIiVzIC0+ICVzIiwgc2hhMV90b19oZXgob25lKSwgc2hhMV90b19oZXgodHdvKSk7CisgKiAgIHByaW50ZigiJXMgLT4gJXMiLCBoYXNoX3RvX2hleChvbmUpLCBoYXNoX3RvX2hleCh0d28pKTsKKyAqICAgcHJpbnRmKCIlcyAtPiAlcyIsIG9pZF90b19oZXgob25lKSwgb2lkX3RvX2hleCh0d28pKTsKICAqLwogY2hhciAqaGFzaF90b19oZXhfYWxnb3BfcihjaGFyICpidWZmZXIsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmhhc2gsIGNvbnN0IHN0cnVjdCBnaXRfaGFzaF9hbGdvICopOwotY2hhciAqc2hhMV90b19oZXhfcihjaGFyICpvdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpOwogY2hhciAqb2lkX3RvX2hleF9yKGNoYXIgKm91dCwgY29uc3Qgc3RydWN0IG9iamVjdF9pZCAqb2lkKTsKIGNoYXIgKmhhc2hfdG9faGV4X2FsZ29wKGNvbnN0IHVuc2lnbmVkIGNoYXIgKmhhc2gsIGNvbnN0IHN0cnVjdCBnaXRfaGFzaF9hbGdvICopOwkvKiBzdGF0aWMgYnVmZmVyIHJlc3VsdCEgKi8KLWNoYXIgKnNoYTFfdG9faGV4KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpOwkJCQkJCS8qIHNhbWUgc3RhdGljIGJ1ZmZlciAqLwogY2hhciAqaGFzaF90b19oZXgoY29uc3QgdW5zaWduZWQgY2hhciAqaGFzaCk7CQkJCQkJLyogc2FtZSBzdGF0aWMgYnVmZmVyICovCiBjaGFyICpvaWRfdG9faGV4KGNvbnN0IHN0cnVjdCBvYmplY3RfaWQgKm9pZCk7CQkJCQkJLyogc2FtZSBzdGF0aWMgYnVmZmVyICovCiAKZGlmZiAtLWdpdCBhL2NvbW1hbmQtbGlzdC50eHQgYi9jb21tYW5kLWxpc3QudHh0CmluZGV4IGE5YWM3MmIuLjcyZTQzNWMgMTAwNjQ0Ci0tLSBhL2NvbW1hbmQtbGlzdC50eHQKKysrIGIvY29tbWFuZC1saXN0LnR4dApAQCAtMjAzLDYgKzIwMyw3IEBACiBnaXRuYW1lc3BhY2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUKIGdpdHJlcG9zaXRvcnktbGF5b3V0ICAgICAgICAgICAgICAgICAgICBndWlkZQogZ2l0cmV2aXNpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlCitnaXRzdWJtb2R1bGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUKIGdpdHR1dG9yaWFsLTIgICAgICAgICAgICAgICAgICAgICAgICAgICBndWlkZQogZ2l0dHV0b3JpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aWRlCiBnaXR3b3JrZmxvd3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpZGUKZGlmZiAtLWdpdCBhL2NvbW1pdC1ncmFwaC5jIGIvY29tbWl0LWdyYXBoLmMKaW5kZXggZmM0YTQzYi4uNzliYzU2NCAxMDA2NDQKLS0tIGEvY29tbWl0LWdyYXBoLmMKKysrIGIvY29tbWl0LWdyYXBoLmMKQEAgLTQxLDYgKzQxLDkgQEAKICNkZWZpbmUgR1JBUEhfTUlOX1NJWkUgKEdSQVBIX0hFQURFUl9TSVpFICsgNCAqIEdSQVBIX0NIVU5LTE9PS1VQX1dJRFRIIFwKIAkJCSsgR1JBUEhfRkFOT1VUX1NJWkUgKyB0aGVfaGFzaF9hbGdvLT5yYXdzeikKIAorLyogUmVtZW1iZXIgdG8gdXBkYXRlIG9iamVjdCBmbGFnIGFsbG9jYXRpb24gaW4gb2JqZWN0LmggKi8KKyNkZWZpbmUgUkVBQ0hBQkxFICAgICAgICgxdTw8MTUpCisKIGNoYXIgKmdldF9jb21taXRfZ3JhcGhfZmlsZW5hbWUoY29uc3QgY2hhciAqb2JqX2RpcikKIHsKIAljaGFyICpmaWxlbmFtZSA9IHhzdHJmbXQoIiVzL2luZm8vY29tbWl0LWdyYXBoIiwgb2JqX2Rpcik7CkBAIC00NjEsNyArNDY0LDcgQEAKIC8qCiAgKiBSZXR1cm4gMSBpZiBjb21taXRfZ3JhcGggaXMgbm9uLU5VTEwsIGFuZCAwIG90aGVyd2lzZS4KICAqCi0gKiBPbiB0aGUgZmlyc3QgaW52b2NhdGlvbiwgdGhpcyBmdW5jdGlvbiBhdHRlbXBzIHRvIGxvYWQgdGhlIGNvbW1pdAorICogT24gdGhlIGZpcnN0IGludm9jYXRpb24sIHRoaXMgZnVuY3Rpb24gYXR0ZW1wdHMgdG8gbG9hZCB0aGUgY29tbWl0CiAgKiBncmFwaCBpZiB0aGVfcmVwb3NpdG9yeSBpcyBjb25maWd1cmVkIHRvIGhhdmUgb25lLgogICovCiBzdGF0aWMgaW50IHByZXBhcmVfY29tbWl0X2dyYXBoKHN0cnVjdCByZXBvc2l0b3J5ICpyKQpAQCAtODU1LDkgKzg1OCw2IEBACiAJCQlkaWUoXygidW5hYmxlIHRvIHBhcnNlIGNvbW1pdCAlcyIpLAogCQkJCW9pZF90b19oZXgoJigqbGlzdCktPm9iamVjdC5vaWQpKTsKIAkJdHJlZSA9IGdldF9jb21taXRfdHJlZV9vaWQoKmxpc3QpOwotCQlpZiAoIXRyZWUpCi0JCQlkaWUoXygidW5hYmxlIHRvIGdldCB0cmVlIGZvciAlcyIpLAotCQkJCW9pZF90b19oZXgoJigqbGlzdCktPm9iamVjdC5vaWQpKTsKIAkJaGFzaHdyaXRlKGYsIHRyZWUtPmhhc2gsIGhhc2hfbGVuKTsKIAogCQlwYXJlbnQgPSAoKmxpc3QpLT5wYXJlbnRzOwpAQCAtMTAzMCwxMSArMTAzMCwxMSBAQAogewogCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50OwogCWZvciAocGFyZW50ID0gY29tbWl0LT5wYXJlbnRzOyBwYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+bmV4dCkgewotCQlpZiAoIShwYXJlbnQtPml0ZW0tPm9iamVjdC5mbGFncyAmIFVOSU5URVJFU1RJTkcpKSB7CisJCWlmICghKHBhcmVudC0+aXRlbS0+b2JqZWN0LmZsYWdzICYgUkVBQ0hBQkxFKSkgewogCQkJQUxMT0NfR1JPVyhjdHgtPm9pZHMubGlzdCwgY3R4LT5vaWRzLm5yICsgMSwgY3R4LT5vaWRzLmFsbG9jKTsKIAkJCW9pZGNweSgmY3R4LT5vaWRzLmxpc3RbY3R4LT5vaWRzLm5yXSwgJihwYXJlbnQtPml0ZW0tPm9iamVjdC5vaWQpKTsKIAkJCWN0eC0+b2lkcy5ucisrOwotCQkJcGFyZW50LT5pdGVtLT5vYmplY3QuZmxhZ3MgfD0gVU5JTlRFUkVTVElORzsKKwkJCXBhcmVudC0+aXRlbS0+b2JqZWN0LmZsYWdzIHw9IFJFQUNIQUJMRTsKIAkJfQogCX0KIH0KQEAgLTEwNTIsNyArMTA1Miw3IEBACiAJCWRpc3BsYXlfcHJvZ3Jlc3MoY3R4LT5wcm9ncmVzcywgaSArIDEpOwogCQljb21taXQgPSBsb29rdXBfY29tbWl0KGN0eC0+ciwgJmN0eC0+b2lkcy5saXN0W2ldKTsKIAkJaWYgKGNvbW1pdCkKLQkJCWNvbW1pdC0+b2JqZWN0LmZsYWdzIHw9IFVOSU5URVJFU1RJTkc7CisJCQljb21taXQtPm9iamVjdC5mbGFncyB8PSBSRUFDSEFCTEU7CiAJfQogCXN0b3BfcHJvZ3Jlc3MoJmN0eC0+cHJvZ3Jlc3MpOwogCkBAIC0xMDg5LDcgKzEwODksNyBAQAogCQljb21taXQgPSBsb29rdXBfY29tbWl0KGN0eC0+ciwgJmN0eC0+b2lkcy5saXN0W2ldKTsKIAogCQlpZiAoY29tbWl0KQotCQkJY29tbWl0LT5vYmplY3QuZmxhZ3MgJj0gflVOSU5URVJFU1RJTkc7CisJCQljb21taXQtPm9iamVjdC5mbGFncyAmPSB+UkVBQ0hBQkxFOwogCX0KIAlzdG9wX3Byb2dyZXNzKCZjdHgtPnByb2dyZXNzKTsKIH0KZGlmZiAtLWdpdCBhL2NvbW1pdC1yZWFjaC5jIGIvY29tbWl0LXJlYWNoLmMKaW5kZXggM2VhMTc0Ny4uNGNhN2U3MCAxMDA2NDQKLS0tIGEvY29tbWl0LXJlYWNoLmMKKysrIGIvY29tbWl0LXJlYWNoLmMKQEAgLTEwLDcgKzEwLDYgQEAKICNpbmNsdWRlICJjb21taXQtcmVhY2guaCIKIAogLyogUmVtZW1iZXIgdG8gdXBkYXRlIG9iamVjdCBmbGFnIGFsbG9jYXRpb24gaW4gb2JqZWN0LmggKi8KLSNkZWZpbmUgUkVBQ0hBQkxFICAgICAgICgxdTw8MTUpCiAjZGVmaW5lIFBBUkVOVDEJCSgxdTw8MTYpCiAjZGVmaW5lIFBBUkVOVDIJCSgxdTw8MTcpCiAjZGVmaW5lIFNUQUxFCQkoMXU8PDE4KQpkaWZmIC0tZ2l0IGEvY29tbWl0LmMgYi9jb21taXQuYwppbmRleCA0MDg5MGFlLi40MzRlYzAzIDEwMDY0NAotLS0gYS9jb21taXQuYworKysgYi9jb21taXQuYwpAQCAtMTksNiArMTksNyBAQAogI2luY2x1ZGUgImFkdmljZS5oIgogI2luY2x1ZGUgInJlZnMuaCIKICNpbmNsdWRlICJjb21taXQtcmVhY2guaCIKKyNpbmNsdWRlICJydW4tY29tbWFuZC5oIgogCiBzdGF0aWMgc3RydWN0IGNvbW1pdF9leHRyYV9oZWFkZXIgKnJlYWRfY29tbWl0X2V4dHJhX2hlYWRlcl9saW5lcyhjb25zdCBjaGFyICpidWYsIHNpemVfdCBsZW4sIGNvbnN0IGNoYXIgKiopOwogCkBAIC00MDEsMTAgKzQwMiwyMiBAQAogCXN0cnVjdCBjb21taXRfZ3JhZnQgKmdyYWZ0OwogCWNvbnN0IGludCB0cmVlX2VudHJ5X2xlbiA9IHRoZV9oYXNoX2FsZ28tPmhleHN6ICsgNTsKIAljb25zdCBpbnQgcGFyZW50X2VudHJ5X2xlbiA9IHRoZV9oYXNoX2FsZ28tPmhleHN6ICsgNzsKKwlzdHJ1Y3QgdHJlZSAqdHJlZTsKIAogCWlmIChpdGVtLT5vYmplY3QucGFyc2VkKQogCQlyZXR1cm4gMDsKLQlpdGVtLT5vYmplY3QucGFyc2VkID0gMTsKKworCWlmIChpdGVtLT5wYXJlbnRzKSB7CisJCS8qCisJCSAqIFByZXN1bWFibHkgdGhpcyBpcyBsZWZ0b3ZlciBmcm9tIGFuIGVhcmxpZXIgZmFpbGVkIHBhcnNlOworCQkgKiBjbGVhciBpdCBvdXQgaW4gcHJlcGFyYXRpb24gZm9yIHVzIHJlLXBhcnNpbmcgKHdlJ2xsIGhpdCB0aGUKKwkJICogc2FtZSBlcnJvciwgYnV0IHRoYXQncyBnb29kLCBzaW5jZSBpdCBsZXRzIG91ciBjYWxsZXIga25vdworCQkgKiB0aGUgcmVzdWx0IGNhbm5vdCBiZSB0cnVzdGVkLgorCQkgKi8KKwkJZnJlZV9jb21taXRfbGlzdChpdGVtLT5wYXJlbnRzKTsKKwkJaXRlbS0+cGFyZW50cyA9IE5VTEw7CisJfQorCiAJdGFpbCArPSBzaXplOwogCWlmICh0YWlsIDw9IGJ1ZnB0ciArIHRyZWVfZW50cnlfbGVuICsgMSB8fCBtZW1jbXAoYnVmcHRyLCAidHJlZSAiLCA1KSB8fAogCQkJYnVmcHRyW3RyZWVfZW50cnlfbGVuXSAhPSAnXG4nKQpAQCAtNDEyLDcgKzQyNSwxMiBAQAogCWlmIChnZXRfb2lkX2hleChidWZwdHIgKyA1LCAmcGFyZW50KSA8IDApCiAJCXJldHVybiBlcnJvcigiYmFkIHRyZWUgcG9pbnRlciBpbiBjb21taXQgJXMiLAogCQkJICAgICBvaWRfdG9faGV4KCZpdGVtLT5vYmplY3Qub2lkKSk7Ci0Jc2V0X2NvbW1pdF90cmVlKGl0ZW0sIGxvb2t1cF90cmVlKHIsICZwYXJlbnQpKTsKKwl0cmVlID0gbG9va3VwX3RyZWUociwgJnBhcmVudCk7CisJaWYgKCF0cmVlKQorCQlyZXR1cm4gZXJyb3IoImJhZCB0cmVlIHBvaW50ZXIgJXMgaW4gY29tbWl0ICVzIiwKKwkJCSAgICAgb2lkX3RvX2hleCgmcGFyZW50KSwKKwkJCSAgICAgb2lkX3RvX2hleCgmaXRlbS0+b2JqZWN0Lm9pZCkpOworCXNldF9jb21taXRfdHJlZShpdGVtLCB0cmVlKTsKIAlidWZwdHIgKz0gdHJlZV9lbnRyeV9sZW4gKyAxOyAvKiAidHJlZSAiICsgImhleCBzaGExIiArICJcbiIgKi8KIAlwcHRyID0gJml0ZW0tPnBhcmVudHM7CiAKQEAgLTQzMiw4ICs0NTAsMTEgQEAKIAkJaWYgKGdyYWZ0ICYmIChncmFmdC0+bnJfcGFyZW50IDwgMCB8fCBncmFmdHNfcmVwbGFjZV9wYXJlbnRzKSkKIAkJCWNvbnRpbnVlOwogCQluZXdfcGFyZW50ID0gbG9va3VwX2NvbW1pdChyLCAmcGFyZW50KTsKLQkJaWYgKG5ld19wYXJlbnQpCi0JCQlwcHRyID0gJmNvbW1pdF9saXN0X2luc2VydChuZXdfcGFyZW50LCBwcHRyKS0+bmV4dDsKKwkJaWYgKCFuZXdfcGFyZW50KQorCQkJcmV0dXJuIGVycm9yKCJiYWQgcGFyZW50ICVzIGluIGNvbW1pdCAlcyIsCisJCQkJICAgICBvaWRfdG9faGV4KCZwYXJlbnQpLAorCQkJCSAgICAgb2lkX3RvX2hleCgmaXRlbS0+b2JqZWN0Lm9pZCkpOworCQlwcHRyID0gJmNvbW1pdF9saXN0X2luc2VydChuZXdfcGFyZW50LCBwcHRyKS0+bmV4dDsKIAl9CiAJaWYgKGdyYWZ0KSB7CiAJCWludCBpOwpAQCAtNDQyLDcgKzQ2Myw5IEBACiAJCQluZXdfcGFyZW50ID0gbG9va3VwX2NvbW1pdChyLAogCQkJCQkJICAgJmdyYWZ0LT5wYXJlbnRbaV0pOwogCQkJaWYgKCFuZXdfcGFyZW50KQotCQkJCWNvbnRpbnVlOworCQkJCXJldHVybiBlcnJvcigiYmFkIGdyYWZ0IHBhcmVudCAlcyBpbiBjb21taXQgJXMiLAorCQkJCQkgICAgIG9pZF90b19oZXgoJmdyYWZ0LT5wYXJlbnRbaV0pLAorCQkJCQkgICAgIG9pZF90b19oZXgoJml0ZW0tPm9iamVjdC5vaWQpKTsKIAkJCXBwdHIgPSAmY29tbWl0X2xpc3RfaW5zZXJ0KG5ld19wYXJlbnQsIHBwdHIpLT5uZXh0OwogCQl9CiAJfQpAQCAtNDUxLDYgKzQ3NCw3IEBACiAJaWYgKGNoZWNrX2dyYXBoKQogCQlsb2FkX2NvbW1pdF9ncmFwaF9pbmZvKHIsIGl0ZW0pOwogCisJaXRlbS0+b2JqZWN0LnBhcnNlZCA9IDE7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTE1ODEsMyArMTYwNSwyNiBAQAogCX0KIAlyZXR1cm4gYm9jID8gbGVuIC0gYm9jIDogbGVuIC0gY3V0b2ZmOwogfQorCitpbnQgcnVuX2NvbW1pdF9ob29rKGludCBlZGl0b3JfaXNfdXNlZCwgY29uc3QgY2hhciAqaW5kZXhfZmlsZSwKKwkJICAgIGNvbnN0IGNoYXIgKm5hbWUsIC4uLikKK3sKKwlzdHJ1Y3QgYXJndl9hcnJheSBob29rX2VudiA9IEFSR1ZfQVJSQVlfSU5JVDsKKwl2YV9saXN0IGFyZ3M7CisJaW50IHJldDsKKworCWFyZ3ZfYXJyYXlfcHVzaGYoJmhvb2tfZW52LCAiR0lUX0lOREVYX0ZJTEU9JXMiLCBpbmRleF9maWxlKTsKKworCS8qCisJICogTGV0IHRoZSBob29rIGtub3cgdGhhdCBubyBlZGl0b3Igd2lsbCBiZSBsYXVuY2hlZC4KKwkgKi8KKwlpZiAoIWVkaXRvcl9pc191c2VkKQorCQlhcmd2X2FycmF5X3B1c2goJmhvb2tfZW52LCAiR0lUX0VESVRPUj06Iik7CisKKwl2YV9zdGFydChhcmdzLCBuYW1lKTsKKwlyZXQgPSBydW5faG9va192ZShob29rX2Vudi5hcmd2LG5hbWUsIGFyZ3MpOworCXZhX2VuZChhcmdzKTsKKwlhcmd2X2FycmF5X2NsZWFyKCZob29rX2Vudik7CisKKwlyZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvY29tbWl0LmggYi9jb21taXQuaAppbmRleCBmNTI5NWNhLi4yMjFjZGFhIDEwMDY0NAotLS0gYS9jb21taXQuaAorKysgYi9jb21taXQuaApAQCAtMTMyLDcgKzEzMiw3IEBACiAjZW5kaWYKIAogLyoKLSAqIFRlbGwgdGhlIGNvbW1pdCBzdWJzeXRlbSB0aGF0IHdlIGFyZSBkb25lIHdpdGggYSBwYXJ0aWN1bGFyIGNvbW1pdCBidWZmZXIuCisgKiBUZWxsIHRoZSBjb21taXQgc3Vic3lzdGVtIHRoYXQgd2UgYXJlIGRvbmUgd2l0aCBhIHBhcnRpY3VsYXIgY29tbWl0IGJ1ZmZlci4KICAqIFRoZSBjb21taXQgYW5kIGJ1ZmZlciBzaG91bGQgYmUgdGhlIGlucHV0IGFuZCByZXR1cm4gdmFsdWUsIHJlc3BlY3RpdmVseSwKICAqIGZyb20gYW4gZWFybGllciBjYWxsIHRvIGdldF9jb21taXRfYnVmZmVyLiAgVGhlIGJ1ZmZlciBtYXkgb3IgbWF5IG5vdCBiZQogICogZnJlZWQgYnkgdGhpcyBjYWxsOyBjYWxsZXJzIHNob3VsZCBub3QgYWNjZXNzIHRoZSBtZW1vcnkgYWZ0ZXJ3YXJkcy4KZGlmZiAtLWdpdCBhL2NvbXBhdC9taW5ndy5oIGIvY29tcGF0L21pbmd3LmgKaW5kZXggOWFkMjA0Yy4uMWE0NjMzNCAxMDA2NDQKLS0tIGEvY29tcGF0L21pbmd3LmgKKysrIGIvY29tcGF0L21pbmd3LmgKQEAgLTU1OCw3ICs1NTgsNyBAQAogCiAvKgogICogQSBjcml0aWNhbCBzZWN0aW9uIHVzZWQgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzcGF3bgotICogZnVuY3Rpb25zIChtaW5nd19zcGF3bnZbcF1lKCkpIGFuZCB3YWl0cGlkKCkuIEludGlhbGlzZWQgaW4KKyAqIGZ1bmN0aW9ucyAobWluZ3dfc3Bhd252W3BdZSgpKSBhbmQgd2FpdHBpZCgpLiBJbml0aWFsaXNlZCBpbgogICogdGhlIHJlcGxhY2VtZW50IG1haW4oKSBtYWNybyBiZWxvdy4KICAqLwogZXh0ZXJuIENSSVRJQ0FMX1NFQ1RJT04gcGluZm9fY3M7CmRpZmYgLS1naXQgYS9jb21wYXQvbmVkbWFsbG9jL21hbGxvYy5jLmggYi9jb21wYXQvbmVkbWFsbG9jL21hbGxvYy5jLmgKaW5kZXggOTEzNDM0OS4uODE0ODQ1ZCAxMDA2NDQKLS0tIGEvY29tcGF0L25lZG1hbGxvYy9tYWxsb2MuYy5oCisrKyBiL2NvbXBhdC9uZWRtYWxsb2MvbWFsbG9jLmMuaApAQCAtMTU2NCw3ICsxNTY0LDcgQEAKICAgcmV0dXJuIChwdHIgIT0gMCk/IHB0cjogTUZBSUw7CiB9CiAKLS8qIFRoaXMgZnVuY3Rpb24gc3VwcG9ydHMgcmVsZWFzaW5nIGNvYWxlc2VkIHNlZ21lbnRzICovCisvKiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHJlbGVhc2luZyBjb2FsZXNjZWQgc2VnbWVudHMgKi8KIHN0YXRpYyBGT1JDRUlOTElORSBpbnQgd2luMzJtdW5tYXAodm9pZCogcHRyLCBzaXplX3Qgc2l6ZSkgewogICBNRU1PUllfQkFTSUNfSU5GT1JNQVRJT04gbWluZm87CiAgIGNoYXIqIGNwdHIgPSAoY2hhciopcHRyOwpAQCAtMTY1NSw3ICsxNjU1LDcgQEAKICAgICAjZGVmaW5lIENBTExfTVJFTUFQKGFkZHIsIG9zeiwgbnN6LCBtdikgICAgIE1GQUlMCiAjZW5kaWYgLyogSEFWRV9NTUFQICYmIEhBVkVfTVJFTUFQICovCiAKLS8qIG1zdGF0ZSBiaXQgc2V0IGlmIGNvbnRpbmd1b3VzIG1vcmVjb3JlIGRpc2FibGVkIG9yIGZhaWxlZCAqLworLyogbXN0YXRlIGJpdCBzZXQgaWYgY29udGlndW91cyBtb3JlY29yZSBkaXNhYmxlZCBvciBmYWlsZWQgKi8KICNkZWZpbmUgVVNFX05PTkNPTlRJR1VPVVNfQklUICg0VSkKIAogLyogc2VnbWVudCBiaXQgc2V0IGluIGNyZWF0ZV9tc3BhY2Vfd2l0aF9iYXNlICovCkBAIC0yNDg1LDcgKzI0ODUsNyBAQAogCiAgIFRyaW0gc3VwcG9ydAogICAgIEZpZWxkcyBob2xkaW5nIHRoZSBhbW91bnQgb2YgdW51c2VkIHRvcG1vc3QgbWVtb3J5IHRoYXQgc2hvdWxkIHRyaWdnZXIKLSAgICB0aW1taW5nLCBhbmQgYSBjb3VudGVyIHRvIGZvcmNlIHBlcmlvZGljIHNjYW5uaW5nIHRvIHJlbGVhc2UgdW51c2VkCisgICAgdGltaW5nLCBhbmQgYSBjb3VudGVyIHRvIGZvcmNlIHBlcmlvZGljIHNjYW5uaW5nIHRvIHJlbGVhc2UgdW51c2VkCiAgICAgbm9uLXRvcG1vc3Qgc2VnbWVudHMuCiAKICAgTG9ja2luZwpkaWZmIC0tZ2l0IGEvY29tcGF0L29ic3RhY2suaCBiL2NvbXBhdC9vYnN0YWNrLmgKaW5kZXggYWUzNmVkNi4uMDFlN2M4MSAxMDA2NDQKLS0tIGEvY29tcGF0L29ic3RhY2suaAorKysgYi9jb21wYXQvb2JzdGFjay5oCkBAIC03OSw3ICs3OSw3IEBACiBXaGVuIHRoZSBjaGFycyBidXJzdCBvdmVyIGEgY2h1bmsgYm91bmRhcnksIHdlIGFsbG9jYXRlIGEgbGFyZ2VyCiBjaHVuaywgYW5kIHRoZW4gY29weSB0aGUgcGFydGx5IGZvcm1lZCBvYmplY3QgZnJvbSB0aGUgZW5kIG9mIHRoZSBvbGQKIGNodW5rIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5ldyBsYXJnZXIgY2h1bmsuICBXZSB0aGVuIGNhcnJ5IG9uCi1hY2NyZXRpbmcgY2hhcmFjdGVycyB0byB0aGUgZW5kIG9mIHRoZSBvYmplY3QgYXMgd2Ugbm9ybWFsbHkgd291bGQuCithY2NyZWRpdGluZyBjaGFyYWN0ZXJzIHRvIHRoZSBlbmQgb2YgdGhlIG9iamVjdCBhcyB3ZSBub3JtYWxseSB3b3VsZC4KIAogQSBzcGVjaWFsIG1hY3JvIGlzIHByb3ZpZGVkIHRvIGFkZCBhIHNpbmdsZSBjaGFyIGF0IGEgdGltZSB0byBhCiBncm93aW5nIG9iamVjdC4gIFRoaXMgYWxsb3dzIHRoZSB1c2Ugb2YgcmVnaXN0ZXIgdmFyaWFibGVzLCB3aGljaApkaWZmIC0tZ2l0IGEvY29tcGF0L3JlZ2V4L3JlZ2NvbXAuYyBiL2NvbXBhdC9yZWdleC9yZWdjb21wLmMKaW5kZXggYzBkODM4OC4uZDFiYzA5ZSAxMDA2NDQKLS0tIGEvY29tcGF0L3JlZ2V4L3JlZ2NvbXAuYworKysgYi9jb21wYXQvcmVnZXgvcmVnY29tcC5jCkBAIC0zNDYyLDcgKzM0NjIsNyBAQAogCS8qIFRoaXMgaXNuJ3QgYSB2YWxpZCBjaGFyYWN0ZXIuICAqLwogCXJldHVybiBSRUdfRUNPTExBVEU7CiAKLSAgICAgIC8qIEJ1aWxkIHNpbmdsZSBieXRlIG1hdGNpbmcgdGFibGUgZm9yIHRoaXMgZXF1aXZhbGVuY2UgY2xhc3MuICAqLworICAgICAgLyogQnVpbGQgc2luZ2xlIGJ5dGUgbWF0Y2hpbmcgdGFibGUgZm9yIHRoaXMgZXF1aXZhbGVuY2UgY2xhc3MuICAqLwogICAgICAgY2hhcl9idWZbMV0gPSAodW5zaWduZWQgY2hhcikgJ1wwJzsKICAgICAgIGxlbiA9IHdlaWdodHNbaWR4MSAmIDB4ZmZmZmZmXTsKICAgICAgIGZvciAoY2ggPSAwOyBjaCA8IFNCQ19NQVg7ICsrY2gpCmRpZmYgLS1naXQgYS9jb21wYXQvcmVnZXgvcmVnZXguaCBiL2NvbXBhdC9yZWdleC9yZWdleC5oCmluZGV4IDRkODEzNTguLjA4YTI2MDkgMTAwNjQ0Ci0tLSBhL2NvbXBhdC9yZWdleC9yZWdleC5oCisrKyBiL2NvbXBhdC9yZWdleC9yZWdleC5oCkBAIC0zMjIsNyArMzIyLDcgQEAKICAgLyogUE9TSVggcmVnY29tcCByZXR1cm4gZXJyb3IgY29kZXMuICAoSW4gdGhlIG9yZGVyIGxpc3RlZCBpbiB0aGUKICAgICAgc3RhbmRhcmQuKSAgKi8KICAgUkVHX0JBRFBBVCwJCS8qIEludmFsaWQgcGF0dGVybi4gICovCi0gIFJFR19FQ09MTEFURSwJCS8qIEluYWxpZCBjb2xsYXRpbmcgZWxlbWVudC4gICovCisgIFJFR19FQ09MTEFURSwJCS8qIEludmFsaWQgY29sbGF0aW5nIGVsZW1lbnQuICAqLwogICBSRUdfRUNUWVBFLAkJLyogSW52YWxpZCBjaGFyYWN0ZXIgY2xhc3MgbmFtZS4gICovCiAgIFJFR19FRVNDQVBFLAkJLyogVHJhaWxpbmcgYmFja3NsYXNoLiAgKi8KICAgUkVHX0VTVUJSRUcsCQkvKiBJbnZhbGlkIGJhY2sgcmVmZXJlbmNlLiAgKi8KZGlmZiAtLWdpdCBhL2NvbXBhdC9yZWdleC9yZWdleF9pbnRlcm5hbC5jIGIvY29tcGF0L3JlZ2V4L3JlZ2V4X2ludGVybmFsLmMKaW5kZXggNTliZjE1MS4uZWM1MWNmMyAxMDA2NDQKLS0tIGEvY29tcGF0L3JlZ2V4L3JlZ2V4X2ludGVybmFsLmMKKysrIGIvY29tcGF0L3JlZ2V4L3JlZ2V4X2ludGVybmFsLmMKQEAgLTE2MTYsNyArMTYxNiw3IEBACiAgIHJlX2ZyZWUgKHN0YXRlKTsKIH0KIAotLyogQ3JlYXRlIHRoZSBuZXcgc3RhdGUgd2hpY2ggaXMgaW5kZXBlbmQgb2YgY29udGV4dHMuCisvKiBDcmVhdGUgdGhlIG5ldyBzdGF0ZSB3aGljaCBpcyBpbmRlcGVuZGVudCBvZiBjb250ZXh0cy4KICAgIFJldHVybiB0aGUgbmV3IHN0YXRlIGlmIHN1Y2NlZWRlZCwgb3RoZXJ3aXNlIHJldHVybiBOVUxMLiAgKi8KIAogc3RhdGljIHJlX2RmYXN0YXRlX3QgKgpkaWZmIC0tZ2l0IGEvY29tcGF0L3JlZ2V4L3JlZ2V4ZWMuYyBiL2NvbXBhdC9yZWdleC9yZWdleGVjLmMKaW5kZXggMWI1ZDg5Zi4uNDkzNThhZSAxMDA2NDQKLS0tIGEvY29tcGF0L3JlZ2V4L3JlZ2V4ZWMuYworKysgYi9jb21wYXQvcmVnZXgvcmVnZXhlYy5jCkBAIC0yNDIwLDcgKzI0MjAsNyBAQAogLyogRnJvbSB0aGUgbm9kZSBzZXQgQ1VSX05PREVTLCBwaWNrIHVwIHRoZSBub2RlcyB3aG9zZSB0eXBlcyBhcmUKICAgIE9QX09QRU5fU1VCRVhQIGFuZCB3aGljaCBoYXZlIGNvcnJlc3BvbmRpbmcgYmFjayByZWZlcmVuY2VzIGluIHRoZSByZWd1bGFyCiAgICBleHByZXNzaW9uLiBBbmQgcmVnaXN0ZXIgdGhlbSB0byB1c2UgdGhlbSBsYXRlciBmb3IgZXZhbHVhdGluZyB0aGUKLSAgIGNvcnJlc3BvZGluZyBiYWNrIHJlZmVyZW5jZXMuICAqLworICAgY29ycmVzcG9uZGluZyBiYWNrIHJlZmVyZW5jZXMuICAqLwogCiBzdGF0aWMgcmVnX2VycmNvZGVfdAogaW50ZXJuYWxfZnVuY3Rpb24KQEAgLTMzNDcsNyArMzM0Nyw3IEBACiAgIGRlc3RzX25vZGUgPSBkZXN0c19hbGxvYy0+ZGVzdHNfbm9kZTsKICAgZGVzdHNfY2ggPSBkZXN0c19hbGxvYy0+ZGVzdHNfY2g7CiAKLSAgLyogSW5pdGlhbGl6ZSB0cmFuc2l0b24gdGFibGUuICAqLworICAvKiBJbml0aWFsaXplIHRyYW5zaXRpb24gdGFibGUuICAqLwogICBzdGF0ZS0+d29yZF90cnRhYmxlID0gc3RhdGUtPnRydGFibGUgPSBOVUxMOwogCiAgIC8qIEF0IGZpcnN0LCBncm91cCBhbGwgbm9kZXMgYmVsb25naW5nIHRvIGBzdGF0ZScgaW50byBzZXZlcmFsCmRpZmYgLS1naXQgYS9jb21wYXQvdmNidWlsZC9maW5kX3ZzX2Vudi5iYXQgYi9jb21wYXQvdmNidWlsZC9maW5kX3ZzX2Vudi5iYXQKaW5kZXggNDAxOTRkZC4uYjM1ZDI2NCAxMDA2NDQKLS0tIGEvY29tcGF0L3ZjYnVpbGQvZmluZF92c19lbnYuYmF0CisrKyBiL2NvbXBhdC92Y2J1aWxkL2ZpbmRfdnNfZW52LmJhdApAQCAtMTgsNyArMTgsNyBAQAogUkVNIGF0dGVtcHRzIHRvIGRvIHRoYXQuCiBSRU0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogUkVNIFRoaXMgQkFUIGZpbGUgc3RhcnRzIGluIGEgcGxhaW4gKG5vbi1kZXZlbG9wZXIpIGNvbW1hbmQgcHJvbXB0LAotUkVNIHNlYXJjaGVzIGZvciB0aGUgImJlc3QiIGNvbW1tYW5kIHByb21wdCBzZXR1cCBzY3JpcHQsIGluc3RhbGxzCitSRU0gc2VhcmNoZXMgZm9yIHRoZSAiYmVzdCIgY29tbWFuZCBwcm9tcHQgc2V0dXAgc2NyaXB0LCBpbnN0YWxscwogUkVNIGl0IGludG8gdGhlIGN1cnJlbnQgQ01EIHByb2Nlc3MsIGFuZCBleHBvcnRzIHRoZSB2YXJpb3VzIE1TVkMKIFJFTSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHVzZSBieSBNQUtFLgogUkVNCmRpZmYgLS1naXQgYS9jb25maWcuaCBiL2NvbmZpZy5oCmluZGV4IGYwZWQ0NjQuLjkxZmQ0YzUgMTAwNjQ0Ci0tLSBhL2NvbmZpZy5oCisrKyBiL2NvbmZpZy5oCkBAIC00LDYgKzQsMjIgQEAKICNpbmNsdWRlICJoYXNobWFwLmgiCiAjaW5jbHVkZSAic3RyaW5nLWxpc3QuaCIKIAorCisvKioKKyAqIFRoZSBjb25maWcgQVBJIGdpdmVzIGNhbGxlcnMgYSB3YXkgdG8gYWNjZXNzIEdpdCBjb25maWd1cmF0aW9uIGZpbGVzCisgKiAoYW5kIGZpbGVzIHdoaWNoIGhhdmUgdGhlIHNhbWUgc3ludGF4KS4KKyAqCisgKiBHZW5lcmFsIFVzYWdlCisgKiAtLS0tLS0tLS0tLS0tCisgKgorICogQ29uZmlnIGZpbGVzIGFyZSBwYXJzZWQgbGluZWFybHksIGFuZCBlYWNoIHZhcmlhYmxlIGZvdW5kIGlzIHBhc3NlZCB0byBhCisgKiBjYWxsZXItcHJvdmlkZWQgY2FsbGJhY2sgZnVuY3Rpb24uIFRoZSBjYWxsYmFjayBmdW5jdGlvbiBpcyByZXNwb25zaWJsZQorICogZm9yIGFueSBhY3Rpb25zIHRvIGJlIHRha2VuIG9uIHRoZSBjb25maWcgb3B0aW9uLCBhbmQgaXMgZnJlZSB0byBpZ25vcmUKKyAqIHNvbWUgb3B0aW9ucy4gSXQgaXMgbm90IHVuY29tbW9uIGZvciB0aGUgY29uZmlndXJhdGlvbiB0byBiZSBwYXJzZWQKKyAqIHNldmVyYWwgdGltZXMgZHVyaW5nIHRoZSBydW4gb2YgYSBHaXQgcHJvZ3JhbSwgd2l0aCBkaWZmZXJlbnQgY2FsbGJhY2tzCisgKiBwaWNraW5nIG91dCBkaWZmZXJlbnQgdmFyaWFibGVzIHVzZWZ1bCB0byB0aGVtc2VsdmVzLgorICovCisKIHN0cnVjdCBvYmplY3RfaWQ7CiAKIC8qIGdpdF9jb25maWdfcGFyc2Vfa2V5KCkgcmV0dXJucyB0aGVzZSBuZWdhdGVkOiAqLwpAQCAtNzEsOSArODcsMzQgQEAKIAl9IGVycm9yX2FjdGlvbjsKIH07CiAKKy8qKgorICogQSBjb25maWcgY2FsbGJhY2sgZnVuY3Rpb24gdGFrZXMgdGhyZWUgcGFyYW1ldGVyczoKKyAqCisgKiAtIHRoZSBuYW1lIG9mIHRoZSBwYXJzZWQgdmFyaWFibGUuIFRoaXMgaXMgaW4gY2Fub25pY2FsICJmbGF0IiBmb3JtOiB0aGUKKyAqICAgc2VjdGlvbiwgc3Vic2VjdGlvbiwgYW5kIHZhcmlhYmxlIHNlZ21lbnRzIHdpbGwgYmUgc2VwYXJhdGVkIGJ5IGRvdHMsCisgKiAgIGFuZCB0aGUgc2VjdGlvbiBhbmQgdmFyaWFibGUgc2VnbWVudHMgd2lsbCBiZSBhbGwgbG93ZXJjYXNlLiBFLmcuLAorICogICBgY29yZS5pZ25vcmVjYXNlYCwgYGRpZmYuU29tZVR5cGUudGV4dGNvbnZgLgorICoKKyAqIC0gdGhlIHZhbHVlIG9mIHRoZSBmb3VuZCB2YXJpYWJsZSwgYXMgYSBzdHJpbmcuIElmIHRoZSB2YXJpYWJsZSBoYWQgbm8KKyAqICAgdmFsdWUgc3BlY2lmaWVkLCB0aGUgdmFsdWUgd2lsbCBiZSBOVUxMICh0eXBpY2FsbHkgdGhpcyBtZWFucyBpdAorICogICBzaG91bGQgYmUgaW50ZXJwcmV0ZWQgYXMgYm9vbGVhbiB0cnVlKS4KKyAqCisgKiAtIGEgdm9pZCBwb2ludGVyIHBhc3NlZCBpbiBieSB0aGUgY2FsbGVyIG9mIHRoZSBjb25maWcgQVBJOyB0aGlzIGNhbgorICogICBjb250YWluIGNhbGxiYWNrLXNwZWNpZmljIGRhdGEKKyAqCisgKiBBIGNvbmZpZyBjYWxsYmFjayBzaG91bGQgcmV0dXJuIDAgZm9yIHN1Y2Nlc3MsIG9yIC0xIGlmIHRoZSB2YXJpYWJsZQorICogY291bGQgbm90IGJlIHBhcnNlZCBwcm9wZXJseS4KKyAqLwogdHlwZWRlZiBpbnQgKCpjb25maWdfZm5fdCkoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZvaWQgKik7CisKIGludCBnaXRfZGVmYXVsdF9jb25maWcoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZvaWQgKik7CisKKy8qKgorICogUmVhZCBhIHNwZWNpZmljIGZpbGUgaW4gZ2l0LWNvbmZpZyBmb3JtYXQuCisgKiBUaGlzIGZ1bmN0aW9uIHRha2VzIHRoZSBzYW1lIGNhbGxiYWNrIGFuZCBkYXRhIHBhcmFtZXRlcnMgYXMgYGdpdF9jb25maWdgLgorICovCiBpbnQgZ2l0X2NvbmZpZ19mcm9tX2ZpbGUoY29uZmlnX2ZuX3QgZm4sIGNvbnN0IGNoYXIgKiwgdm9pZCAqKTsKKwogaW50IGdpdF9jb25maWdfZnJvbV9maWxlX3dpdGhfb3B0aW9ucyhjb25maWdfZm5fdCBmbiwgY29uc3QgY2hhciAqLAogCQkJCSAgICAgIHZvaWQgKiwKIAkJCQkgICAgICBjb25zdCBzdHJ1Y3QgY29uZmlnX29wdGlvbnMgKik7CkBAIC04OCwzNCArMTI5LDE1NyBAQAogaW50IGdpdF9jb25maWdfZnJvbV9wYXJhbWV0ZXJzKGNvbmZpZ19mbl90IGZuLCB2b2lkICpkYXRhKTsKIHZvaWQgcmVhZF9lYXJseV9jb25maWcoY29uZmlnX2ZuX3QgY2IsIHZvaWQgKmRhdGEpOwogdm9pZCByZWFkX3ZlcnlfZWFybHlfY29uZmlnKGNvbmZpZ19mbl90IGNiLCB2b2lkICpkYXRhKTsKKworLyoqCisgKiBNb3N0IHByb2dyYW1zIHdpbGwgc2ltcGx5IHdhbnQgdG8gbG9vayB1cCB2YXJpYWJsZXMgaW4gYWxsIGNvbmZpZyBmaWxlcworICogdGhhdCBHaXQga25vd3MgYWJvdXQsIHVzaW5nIHRoZSBub3JtYWwgcHJlY2VkZW5jZSBydWxlcy4gVG8gZG8gdGhpcywKKyAqIGNhbGwgYGdpdF9jb25maWdgIHdpdGggYSBjYWxsYmFjayBmdW5jdGlvbiBhbmQgdm9pZCBkYXRhIHBvaW50ZXIuCisgKgorICogYGdpdF9jb25maWdgIHdpbGwgcmVhZCBhbGwgY29uZmlnIHNvdXJjZXMgaW4gb3JkZXIgb2YgaW5jcmVhc2luZworICogcHJpb3JpdHkuIFRodXMgYSBjYWxsYmFjayBzaG91bGQgdHlwaWNhbGx5IG92ZXJ3cml0ZSBwcmV2aW91c2x5LXNlZW4KKyAqIGVudHJpZXMgd2l0aCBuZXcgb25lcyAoZS5nLiwgaWYgYm90aCB0aGUgdXNlci13aWRlIGB+Ly5naXRjb25maWdgIGFuZAorICogcmVwby1zcGVjaWZpYyBgLmdpdC9jb25maWdgIGNvbnRhaW4gYGNvbG9yLnVpYCwgdGhlIGNvbmZpZyBtYWNoaW5lcnkKKyAqIHdpbGwgZmlyc3QgZmVlZCB0aGUgdXNlci13aWRlIG9uZSB0byB0aGUgY2FsbGJhY2ssIGFuZCB0aGVuIHRoZQorICogcmVwby1zcGVjaWZpYyBvbmU7IGJ5IG92ZXJ3cml0aW5nLCB0aGUgaGlnaGVyLXByaW9yaXR5IHJlcG8tc3BlY2lmaWMKKyAqIHZhbHVlIGlzIGxlZnQgYXQgdGhlIGVuZCkuCisgKi8KIHZvaWQgZ2l0X2NvbmZpZyhjb25maWdfZm5fdCBmbiwgdm9pZCAqKTsKKworLyoqCisgKiBMZXRzIHRoZSBjYWxsZXIgZXhhbWluZSBjb25maWcgd2hpbGUgYWRqdXN0aW5nIHNvbWUgb2YgdGhlIGRlZmF1bHQKKyAqIGJlaGF2aW9yIG9mIGBnaXRfY29uZmlnYC4gSXQgc2hvdWxkIGFsbW9zdCBuZXZlciBiZSB1c2VkIGJ5ICJyZWd1bGFyIgorICogR2l0IGNvZGUgdGhhdCBpcyBsb29raW5nIHVwIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLgorICogSXQgaXMgaW50ZW5kZWQgZm9yIGFkdmFuY2VkIGNhbGxlcnMgbGlrZSBgZ2l0LWNvbmZpZ2AsIHdoaWNoIGFyZQorICogaW50ZW50aW9uYWxseSB0d2Vha2luZyB0aGUgbm9ybWFsIGNvbmZpZy1sb29rdXAgcHJvY2Vzcy4KKyAqIEl0IHRha2VzIHR3byBleHRyYSBwYXJhbWV0ZXJzOgorICoKKyAqIC0gYGNvbmZpZ19zb3VyY2VgCisgKiBJZiB0aGlzIHBhcmFtZXRlciBpcyBub24tTlVMTCwgaXQgc3BlY2lmaWVzIHRoZSBzb3VyY2UgdG8gcGFyc2UgZm9yCisgKiBjb25maWd1cmF0aW9uLCByYXRoZXIgdGhhbiBsb29raW5nIGluIHRoZSB1c3VhbCBmaWxlcy4gU2VlIGBzdHJ1Y3QKKyAqIGdpdF9jb25maWdfc291cmNlYCBpbiBgY29uZmlnLmhgIGZvciBkZXRhaWxzLiBSZWd1bGFyIGBnaXRfY29uZmlnYCBkZWZhdWx0cworICogdG8gYE5VTExgLgorICoKKyAqIC0gYG9wdHNgCisgKiBTcGVjaWZ5IG9wdGlvbnMgdG8gYWRqdXN0IHRoZSBiZWhhdmlvciBvZiBwYXJzaW5nIGNvbmZpZyBmaWxlcy4gU2VlIGBzdHJ1Y3QKKyAqIGNvbmZpZ19vcHRpb25zYCBpbiBgY29uZmlnLmhgIGZvciBkZXRhaWxzLiBBcyBhbiBleGFtcGxlOiByZWd1bGFyIGBnaXRfY29uZmlnYAorICogc2V0cyBgb3B0cy5yZXNwZWN0X2luY2x1ZGVzYCB0byBgMWAgYnkgZGVmYXVsdC4KKyAqLwogaW50IGNvbmZpZ193aXRoX29wdGlvbnMoY29uZmlnX2ZuX3QgZm4sIHZvaWQgKiwKIAkJCXN0cnVjdCBnaXRfY29uZmlnX3NvdXJjZSAqY29uZmlnX3NvdXJjZSwKIAkJCWNvbnN0IHN0cnVjdCBjb25maWdfb3B0aW9ucyAqb3B0cyk7CisKKy8qKgorICogVmFsdWUgUGFyc2luZyBIZWxwZXJzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGUgZm9sbG93aW5nIGhlbHBlciBmdW5jdGlvbnMgYWlkIGluIHBhcnNpbmcgc3RyaW5nIHZhbHVlcworICovCisKIGludCBnaXRfcGFyc2Vfc3NpemVfdChjb25zdCBjaGFyICosIHNzaXplX3QgKik7CiBpbnQgZ2l0X3BhcnNlX3Vsb25nKGNvbnN0IGNoYXIgKiwgdW5zaWduZWQgbG9uZyAqKTsKKworLyoqCisgKiBTYW1lIGFzIGBnaXRfY29uZmlnX2Jvb2xgLCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIC0xIG9uIGVycm9yIHJhdGhlcgorICogdGhhbiBkeWluZy4KKyAqLwogaW50IGdpdF9wYXJzZV9tYXliZV9ib29sKGNvbnN0IGNoYXIgKik7CisKKy8qKgorICogUGFyc2UgdGhlIHN0cmluZyB0byBhbiBpbnRlZ2VyLCBpbmNsdWRpbmcgdW5pdCBmYWN0b3JzLiBEaWVzIG9uIGVycm9yOworICogb3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBwYXJzZWQgcmVzdWx0LgorICovCiBpbnQgZ2l0X2NvbmZpZ19pbnQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworCiBpbnQ2NF90IGdpdF9jb25maWdfaW50NjQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworCisvKioKKyAqIElkZW50aWNhbCB0byBgZ2l0X2NvbmZpZ19pbnRgLCBidXQgZm9yIHVuc2lnbmVkIGxvbmdzLgorICovCiB1bnNpZ25lZCBsb25nIGdpdF9jb25maWdfdWxvbmcoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworCiBzc2l6ZV90IGdpdF9jb25maWdfc3NpemVfdChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisKKy8qKgorICogU2FtZSBhcyBgZ2l0X2NvbmZpZ19ib29sYCwgZXhjZXB0IHRoYXQgaW50ZWdlcnMgYXJlIHJldHVybmVkIGFzLWlzLCBhbmQKKyAqIGFuIGBpc19ib29sYCBmbGFnIGlzIHVuc2V0LgorICovCiBpbnQgZ2l0X2NvbmZpZ19ib29sX29yX2ludChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50ICopOworCisvKioKKyAqIFBhcnNlIGEgc3RyaW5nIGludG8gYSBib29sZWFuIHZhbHVlLCByZXNwZWN0aW5nIGtleXdvcmRzIGxpa2UgInRydWUiIGFuZAorICogImZhbHNlIi4gSW50ZWdlciB2YWx1ZXMgYXJlIGNvbnZlcnRlZCBpbnRvIHRydWUvZmFsc2UgdmFsdWVzICh3aGVuIHRoZXkKKyAqIGFyZSBub24temVybyBvciB6ZXJvLCByZXNwZWN0aXZlbHkpLiBPdGhlciB2YWx1ZXMgY2F1c2UgYSBkaWUoKS4gSWYKKyAqIHBhcnNpbmcgaXMgc3VjY2Vzc2Z1bCwgdGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgcmVzdWx0LgorICovCiBpbnQgZ2l0X2NvbmZpZ19ib29sKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKworLyoqCisgKiBBbGxvY2F0ZXMgYW5kIGNvcGllcyB0aGUgdmFsdWUgc3RyaW5nIGludG8gdGhlIGBkZXN0YCBwYXJhbWV0ZXI7IGlmIG5vCisgKiBzdHJpbmcgaXMgZ2l2ZW4sIHByaW50cyBhbiBlcnJvciBtZXNzYWdlIGFuZCByZXR1cm5zIC0xLgorICovCiBpbnQgZ2l0X2NvbmZpZ19zdHJpbmcoY29uc3QgY2hhciAqKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOworCisvKioKKyAqIFNpbWlsYXIgdG8gYGdpdF9jb25maWdfc3RyaW5nYCwgYnV0IGV4cGFuZHMgYH5gIG9yIGB+dXNlcmAgaW50byB0aGUKKyAqIHVzZXIncyBob21lIGRpcmVjdG9yeSB3aGVuIGZvdW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhdGguCisgKi8KIGludCBnaXRfY29uZmlnX3BhdGhuYW1lKGNvbnN0IGNoYXIgKiosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKwogaW50IGdpdF9jb25maWdfZXhwaXJ5X2RhdGUodGltZXN0YW1wX3QgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwogaW50IGdpdF9jb25maWdfY29sb3IoY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiBpbnQgZ2l0X2NvbmZpZ19zZXRfaW5fZmlsZV9nZW50bHkoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisKKy8qKgorICogd3JpdGUgY29uZmlnIHZhbHVlcyB0byBhIHNwZWNpZmljIGNvbmZpZyBmaWxlLCB0YWtlcyBhIGtleS92YWx1ZSBwYWlyIGFzCisgKiBwYXJhbWV0ZXIuCisgKi8KIHZvaWQgZ2l0X2NvbmZpZ19zZXRfaW5fZmlsZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKwogaW50IGdpdF9jb25maWdfc2V0X2dlbnRseShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisKKy8qKgorICogd3JpdGUgY29uZmlnIHZhbHVlcyB0byBgLmdpdC9jb25maWdgLCB0YWtlcyBhIGtleS92YWx1ZSBwYWlyIGFzIHBhcmFtZXRlci4KKyAqLwogdm9pZCBnaXRfY29uZmlnX3NldChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisKIGludCBnaXRfY29uZmlnX3BhcnNlX2tleShjb25zdCBjaGFyICosIGNoYXIgKiosIGludCAqKTsKIGludCBnaXRfY29uZmlnX2tleV9pc192YWxpZChjb25zdCBjaGFyICprZXkpOwogaW50IGdpdF9jb25maWdfc2V0X211bHRpdmFyX2dlbnRseShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwogdm9pZCBnaXRfY29uZmlnX3NldF9tdWx0aXZhcihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwogaW50IGdpdF9jb25maWdfc2V0X211bHRpdmFyX2luX2ZpbGVfZ2VudGx5KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKworLyoqCisgKiB0YWtlcyBmb3VyIHBhcmFtZXRlcnM6CisgKgorICogLSB0aGUgbmFtZSBvZiB0aGUgZmlsZSwgYXMgYSBzdHJpbmcsIHRvIHdoaWNoIGtleS92YWx1ZSBwYWlycyB3aWxsIGJlIHdyaXR0ZW4uCisgKgorICogLSB0aGUgbmFtZSBvZiBrZXksIGFzIGEgc3RyaW5nLiBUaGlzIGlzIGluIGNhbm9uaWNhbCAiZmxhdCIgZm9ybTogdGhlIHNlY3Rpb24sCisgKiAgIHN1YnNlY3Rpb24sIGFuZCB2YXJpYWJsZSBzZWdtZW50cyB3aWxsIGJlIHNlcGFyYXRlZCBieSBkb3RzLCBhbmQgdGhlIHNlY3Rpb24KKyAqICAgYW5kIHZhcmlhYmxlIHNlZ21lbnRzIHdpbGwgYmUgYWxsIGxvd2VyY2FzZS4KKyAqICAgRS5nLiwgYGNvcmUuaWdub3JlY2FzZWAsIGBkaWZmLlNvbWVUeXBlLnRleHRjb252YC4KKyAqCisgKiAtIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUsIGFzIGEgc3RyaW5nLiBJZiB2YWx1ZSBpcyBlcXVhbCB0byBOVUxMLCBpdCB3aWxsCisgKiAgIHJlbW92ZSB0aGUgbWF0Y2hpbmcga2V5IGZyb20gdGhlIGNvbmZpZyBmaWxlLgorICoKKyAqIC0gdGhlIHZhbHVlIHJlZ2V4LCBhcyBhIHN0cmluZy4gSXQgd2lsbCBkaXNyZWdhcmQga2V5L3ZhbHVlIHBhaXJzIHdoZXJlIHZhbHVlCisgKiAgIGRvZXMgbm90IG1hdGNoLgorICoKKyAqIC0gYSBtdWx0aV9yZXBsYWNlIHZhbHVlLCBhcyBhbiBpbnQuIElmIHZhbHVlIGlzIGVxdWFsIHRvIHplcm8sIG5vdGhpbmcgb3Igb25seQorICogICBvbmUgbWF0Y2hpbmcga2V5L3ZhbHVlIGlzIHJlcGxhY2VkLCBlbHNlIGFsbCBtYXRjaGluZyBrZXkvdmFsdWVzIChyZWdhcmRsZXNzCisgKiAgIGhvdyBtYW55KSBhcmUgcmVtb3ZlZCwgYmVmb3JlIHRoZSBuZXcgcGFpciBpcyB3cml0dGVuLgorICoKKyAqIEl0IHJldHVybnMgMCBvbiBzdWNjZXNzLgorICovCiB2b2lkIGdpdF9jb25maWdfc2V0X211bHRpdmFyX2luX2ZpbGUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworCisvKioKKyAqIHJlbmFtZSBvciByZW1vdmUgc2VjdGlvbnMgaW4gdGhlIGNvbmZpZyBmaWxlCisgKiBwYXJhbWV0ZXJzIGBvbGRfbmFtZWAgYW5kIGBuZXdfbmFtZWAKKyAqIElmIE5VTEwgaXMgcGFzc2VkIHRocm91Z2ggYG5ld19uYW1lYCBwYXJhbWV0ZXIsCisgKiB0aGUgc2VjdGlvbiB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgY29uZmlnIGZpbGUuCisgKi8KIGludCBnaXRfY29uZmlnX3JlbmFtZV9zZWN0aW9uKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKwogaW50IGdpdF9jb25maWdfcmVuYW1lX3NlY3Rpb25faW5fZmlsZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKIGludCBnaXRfY29uZmlnX2NvcHlfc2VjdGlvbihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CiBpbnQgZ2l0X2NvbmZpZ19jb3B5X3NlY3Rpb25faW5fZmlsZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKQEAgLTE0Miw2ICszMDYsMzAgQEAKIGNvbnN0IGNoYXIgKmN1cnJlbnRfY29uZmlnX29yaWdpbl90eXBlKHZvaWQpOwogY29uc3QgY2hhciAqY3VycmVudF9jb25maWdfbmFtZSh2b2lkKTsKIAorLyoqCisgKiBJbmNsdWRlIERpcmVjdGl2ZXMKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIEJ5IGRlZmF1bHQsIHRoZSBjb25maWcgcGFyc2VyIGRvZXMgbm90IHJlc3BlY3QgaW5jbHVkZSBkaXJlY3RpdmVzLgorICogSG93ZXZlciwgYSBjYWxsZXIgY2FuIHVzZSB0aGUgc3BlY2lhbCBgZ2l0X2NvbmZpZ19pbmNsdWRlYCB3cmFwcGVyCisgKiBjYWxsYmFjayB0byBzdXBwb3J0IHRoZW0uIFRvIGRvIHNvLCB5b3Ugc2ltcGx5IHdyYXAgeW91ciAicmVhbCIgY2FsbGJhY2sKKyAqIGZ1bmN0aW9uIGFuZCBkYXRhIHBvaW50ZXIgaW4gYSBgc3RydWN0IGNvbmZpZ19pbmNsdWRlX2RhdGFgLCBhbmQgcGFzcworICogdGhlIHdyYXBwZXIgdG8gdGhlIHJlZ3VsYXIgY29uZmlnLXJlYWRpbmcgZnVuY3Rpb25zLiBGb3IgZXhhbXBsZToKKyAqCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBpbnQgcmVhZF9maWxlX3dpdGhfaW5jbHVkZShjb25zdCBjaGFyICpmaWxlLCBjb25maWdfZm5fdCBmbiwgdm9pZCAqZGF0YSkKKyAqIHsKKyAqIHN0cnVjdCBjb25maWdfaW5jbHVkZV9kYXRhIGluYyA9IENPTkZJR19JTkNMVURFX0lOSVQ7CisgKiBpbmMuZm4gPSBmbjsKKyAqIGluYy5kYXRhID0gZGF0YTsKKyAqIHJldHVybiBnaXRfY29uZmlnX2Zyb21fZmlsZShnaXRfY29uZmlnX2luY2x1ZGUsIGZpbGUsICZpbmMpOworICogfQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIGBnaXRfY29uZmlnYCByZXNwZWN0cyBpbmNsdWRlcyBhdXRvbWF0aWNhbGx5LiBUaGUgbG93ZXItbGV2ZWwKKyAqIGBnaXRfY29uZmlnX2Zyb21fZmlsZWAgZG9lcyBub3QuCisgKgorICovCiBzdHJ1Y3QgY29uZmlnX2luY2x1ZGVfZGF0YSB7CiAJaW50IGRlcHRoOwogCWNvbmZpZ19mbl90IGZuOwpAQCAtMTY5LDYgKzM1NywzMyBAQAogCQkgICAgIGNvbnN0IGNoYXIgKipzdWJzZWN0aW9uLCBpbnQgKnN1YnNlY3Rpb25fbGVuLAogCQkgICAgIGNvbnN0IGNoYXIgKiprZXkpOwogCisvKioKKyAqIEN1c3RvbSBDb25maWdzZXRzCisgKiAtLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIEEgYGNvbmZpZ19zZXRgIGNhbiBiZSB1c2VkIHRvIGNvbnN0cnVjdCBhbiBpbi1tZW1vcnkgY2FjaGUgZm9yCisgKiBjb25maWctbGlrZSBmaWxlcyB0aGF0IHRoZSBjYWxsZXIgc3BlY2lmaWVzIChpLmUuLCBmaWxlcyBsaWtlIGAuZ2l0bW9kdWxlc2AsCisgKiBgfi8uZ2l0Y29uZmlnYCBldGMuKS4gRm9yIGV4YW1wbGUsCisgKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogc3RydWN0IGNvbmZpZ19zZXQgZ21fY29uZmlnOworICogZ2l0X2NvbmZpZ3NldF9pbml0KCZnbV9jb25maWcpOworICogaW50IGI7CisgKiAvL3dlIGFkZCBjb25maWcgZmlsZXMgdG8gdGhlIGNvbmZpZ19zZXQKKyAqIGdpdF9jb25maWdzZXRfYWRkX2ZpbGUoJmdtX2NvbmZpZywgIi5naXRtb2R1bGVzIik7CisgKiBnaXRfY29uZmlnc2V0X2FkZF9maWxlKCZnbV9jb25maWcsICIuZ2l0bW9kdWxlc19hbHQiKTsKKyAqCisgKiBpZiAoIWdpdF9jb25maWdzZXRfZ2V0X2Jvb2woZ21fY29uZmlnLCAic3VibW9kdWxlLmZyb3R6Lmlnbm9yZSIsICZiKSkgeworICogLy9oYWNrIGhhY2sgaGFjaworICogfQorICoKKyAqIHdoZW4gd2UgYXJlIGRvbmUgd2l0aCB0aGUgY29uZmlnc2V0OgorICogZ2l0X2NvbmZpZ3NldF9jbGVhcigmZ21fY29uZmlnKTsKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBDb25maWdzZXQgQVBJIHByb3ZpZGVzIGZ1bmN0aW9ucyBmb3IgdGhlIGFib3ZlIG1lbnRpb25lZCB3b3JrIGZsb3cKKyAqLworCiBzdHJ1Y3QgY29uZmlnX3NldF9lbGVtZW50IHsKIAlzdHJ1Y3QgaGFzaG1hcF9lbnRyeSBlbnQ7CiAJY2hhciAqa2V5OwpAQCAtMTk3LDE2ICs0MTIsNDcgQEAKIAlzdHJ1Y3QgY29uZmlnc2V0X2xpc3QgbGlzdDsKIH07CiAKKy8qKgorICogSW5pdGlhbGl6ZXMgdGhlIGNvbmZpZ19zZXQgYGNzYC4KKyAqLwogdm9pZCBnaXRfY29uZmlnc2V0X2luaXQoc3RydWN0IGNvbmZpZ19zZXQgKmNzKTsKKworLyoqCisgKiBQYXJzZXMgdGhlIGZpbGUgYW5kIGFkZHMgdGhlIHZhcmlhYmxlLXZhbHVlIHBhaXJzIHRvIHRoZSBgY29uZmlnX3NldGAsCisgKiBkaWVzIGlmIHRoZXJlIGlzIGFuIGVycm9yIGluIHBhcnNpbmcgdGhlIGZpbGUuIFJldHVybnMgMCBvbiBzdWNjZXNzLCBvcgorICogLTEgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3Qgb3IgaXMgaW5hY2Nlc3NpYmxlLiBUaGUgdXNlciBoYXMgdG8gZGVjaWRlCisgKiBpZiBoZSB3YW50cyB0byBmcmVlIHRoZSBpbmNvbXBsZXRlIGNvbmZpZ3NldCBvciBjb250aW51ZSB1c2luZyBpdCB3aGVuCisgKiB0aGUgZnVuY3Rpb24gcmV0dXJucyAtMS4KKyAqLwogaW50IGdpdF9jb25maWdzZXRfYWRkX2ZpbGUoc3RydWN0IGNvbmZpZ19zZXQgKmNzLCBjb25zdCBjaGFyICpmaWxlbmFtZSk7CisKKy8qKgorICogRmluZHMgYW5kIHJldHVybnMgdGhlIHZhbHVlIGxpc3QsIHNvcnRlZCBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIHByaW9yaXR5CisgKiBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYGtleWAgYW5kIGNvbmZpZyBzZXQgYGNzYC4gV2hlbiB0aGUKKyAqIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYGtleWAgaXMgbm90IGZvdW5kLCByZXR1cm5zIE5VTEwuIFRoZSBjYWxsZXIKKyAqIHNob3VsZCBub3QgZnJlZSBvciBtb2RpZnkgdGhlIHJldHVybmVkIHBvaW50ZXIsIGFzIGl0IGlzIG93bmVkIGJ5IHRoZSBjYWNoZS4KKyAqLwogY29uc3Qgc3RydWN0IHN0cmluZ19saXN0ICpnaXRfY29uZmlnc2V0X2dldF92YWx1ZV9tdWx0aShzdHJ1Y3QgY29uZmlnX3NldCAqY3MsIGNvbnN0IGNoYXIgKmtleSk7CisKKy8qKgorICogQ2xlYXJzIGBjb25maWdfc2V0YCBzdHJ1Y3R1cmUsIHJlbW92ZXMgYWxsIHNhdmVkIHZhcmlhYmxlLXZhbHVlIHBhaXJzLgorICovCiB2b2lkIGdpdF9jb25maWdzZXRfY2xlYXIoc3RydWN0IGNvbmZpZ19zZXQgKmNzKTsKIAogLyoKICAqIFRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gMSBpZiBub3QgZm91bmQsIGFuZCAwIGlmIGZvdW5kLCBsZWF2aW5nIHRoZSBmb3VuZAogICogdmFsdWUgaW4gdGhlICdkZXN0JyBwb2ludGVyLgogICovCisKKy8qCisgKiBGaW5kcyB0aGUgaGlnaGVzdC1wcmlvcml0eSB2YWx1ZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYGtleWAKKyAqIGFuZCBjb25maWcgc2V0IGBjc2AsIHN0b3JlcyB0aGUgcG9pbnRlciB0byBpdCBpbiBgdmFsdWVgIGFuZCByZXR1cm5zIDAuCisgKiBXaGVuIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlIGBrZXlgIGlzIG5vdCBmb3VuZCwgcmV0dXJucyAxIHdpdGhvdXQKKyAqIHRvdWNoaW5nIGB2YWx1ZWAuIFRoZSBjYWxsZXIgc2hvdWxkIG5vdCBmcmVlIG9yIG1vZGlmeSBgdmFsdWVgLCBhcyBpdAorICogaXMgb3duZWQgYnkgdGhlIGNhY2hlLgorICovCiBpbnQgZ2l0X2NvbmZpZ3NldF9nZXRfdmFsdWUoc3RydWN0IGNvbmZpZ19zZXQgKmNzLCBjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKipkZXN0KTsKKwogaW50IGdpdF9jb25maWdzZXRfZ2V0X3N0cmluZ19jb25zdChzdHJ1Y3QgY29uZmlnX3NldCAqY3MsIGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqKmRlc3QpOwogaW50IGdpdF9jb25maWdzZXRfZ2V0X3N0cmluZyhzdHJ1Y3QgY29uZmlnX3NldCAqY3MsIGNvbnN0IGNoYXIgKmtleSwgY2hhciAqKmRlc3QpOwogaW50IGdpdF9jb25maWdzZXRfZ2V0X2ludChzdHJ1Y3QgY29uZmlnX3NldCAqY3MsIGNvbnN0IGNoYXIgKmtleSwgaW50ICpkZXN0KTsKQEAgLTI0MCwxNyArNDg2LDk0IEBACiBpbnQgcmVwb19jb25maWdfZ2V0X3BhdGhuYW1lKHN0cnVjdCByZXBvc2l0b3J5ICpyZXBvLAogCQkJICAgICBjb25zdCBjaGFyICprZXksIGNvbnN0IGNoYXIgKipkZXN0KTsKIAorLyoqCisgKiBRdWVyeWluZyBGb3IgU3BlY2lmaWMgVmFyaWFibGVzCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogRm9yIHByb2dyYW1zIHdhbnRpbmcgdG8gcXVlcnkgZm9yIHNwZWNpZmljIHZhcmlhYmxlcyBpbiBhIG5vbi1jYWxsYmFjaworICogbWFubmVyLCB0aGUgY29uZmlnIEFQSSBwcm92aWRlcyB0d28gZnVuY3Rpb25zIGBnaXRfY29uZmlnX2dldF92YWx1ZWAKKyAqIGFuZCBgZ2l0X2NvbmZpZ19nZXRfdmFsdWVfbXVsdGlgLiBUaGV5IGJvdGggcmVhZCB2YWx1ZXMgZnJvbSBhbiBpbnRlcm5hbAorICogY2FjaGUgZ2VuZXJhdGVkIHByZXZpb3VzbHkgZnJvbSByZWFkaW5nIHRoZSBjb25maWcgZmlsZXMuCisgKi8KKworLyoqCisgKiBGaW5kcyB0aGUgaGlnaGVzdC1wcmlvcml0eSB2YWx1ZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYGtleWAsCisgKiBzdG9yZXMgdGhlIHBvaW50ZXIgdG8gaXQgaW4gYHZhbHVlYCBhbmQgcmV0dXJucyAwLiBXaGVuIHRoZQorICogY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YCBpcyBub3QgZm91bmQsIHJldHVybnMgMSB3aXRob3V0IHRvdWNoaW5nCisgKiBgdmFsdWVgLiBUaGUgY2FsbGVyIHNob3VsZCBub3QgZnJlZSBvciBtb2RpZnkgYHZhbHVlYCwgYXMgaXQgaXMgb3duZWQKKyAqIGJ5IHRoZSBjYWNoZS4KKyAqLwogaW50IGdpdF9jb25maWdfZ2V0X3ZhbHVlKGNvbnN0IGNoYXIgKmtleSwgY29uc3QgY2hhciAqKnZhbHVlKTsKKworLyoqCisgKiBGaW5kcyBhbmQgcmV0dXJucyB0aGUgdmFsdWUgbGlzdCwgc29ydGVkIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgcHJpb3JpdHkKKyAqIGZvciB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YC4gV2hlbiB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZQorICogYGtleWAgaXMgbm90IGZvdW5kLCByZXR1cm5zIE5VTEwuIFRoZSBjYWxsZXIgc2hvdWxkIG5vdCBmcmVlIG9yIG1vZGlmeQorICogdGhlIHJldHVybmVkIHBvaW50ZXIsIGFzIGl0IGlzIG93bmVkIGJ5IHRoZSBjYWNoZS4KKyAqLwogY29uc3Qgc3RydWN0IHN0cmluZ19saXN0ICpnaXRfY29uZmlnX2dldF92YWx1ZV9tdWx0aShjb25zdCBjaGFyICprZXkpOworCisvKioKKyAqIFJlc2V0cyBhbmQgaW52YWxpZGF0ZXMgdGhlIGNvbmZpZyBjYWNoZS4KKyAqLwogdm9pZCBnaXRfY29uZmlnX2NsZWFyKHZvaWQpOworCisvKioKKyAqIEFsbG9jYXRlcyBhbmQgY29waWVzIHRoZSByZXRyaWV2ZWQgc3RyaW5nIGludG8gdGhlIGBkZXN0YCBwYXJhbWV0ZXIgZm9yCisgKiB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YDsgaWYgTlVMTCBzdHJpbmcgaXMgZ2l2ZW4sIHByaW50cyBhbgorICogZXJyb3IgbWVzc2FnZSBhbmQgcmV0dXJucyAtMS4gV2hlbiB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YCBpcworICogbm90IGZvdW5kLCByZXR1cm5zIDEgd2l0aG91dCB0b3VjaGluZyBgZGVzdGAuCisgKi8KIGludCBnaXRfY29uZmlnX2dldF9zdHJpbmdfY29uc3QoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICoqZGVzdCk7CisKKy8qKgorICogU2ltaWxhciB0byBgZ2l0X2NvbmZpZ19nZXRfc3RyaW5nX2NvbnN0YCwgZXhjZXB0IHRoYXQgcmV0cmlldmVkIHZhbHVlCisgKiBjb3BpZWQgaW50byB0aGUgYGRlc3RgIHBhcmFtZXRlciBpcyBhIG11dGFibGUgc3RyaW5nLgorICovCiBpbnQgZ2l0X2NvbmZpZ19nZXRfc3RyaW5nKGNvbnN0IGNoYXIgKmtleSwgY2hhciAqKmRlc3QpOworCisvKioKKyAqIEZpbmRzIGFuZCBwYXJzZXMgdGhlIHZhbHVlIHRvIGFuIGludGVnZXIgZm9yIHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlCisgKiBga2V5YC4gRGllcyBvbiBlcnJvcjsgb3RoZXJ3aXNlLCBzdG9yZXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJzZWQgaW50ZWdlciBpbgorICogYGRlc3RgIGFuZCByZXR1cm5zIDAuIFdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYGtleWAgaXMgbm90IGZvdW5kLAorICogcmV0dXJucyAxIHdpdGhvdXQgdG91Y2hpbmcgYGRlc3RgLgorICovCiBpbnQgZ2l0X2NvbmZpZ19nZXRfaW50KGNvbnN0IGNoYXIgKmtleSwgaW50ICpkZXN0KTsKKworLyoqCisgKiBTaW1pbGFyIHRvIGBnaXRfY29uZmlnX2dldF9pbnRgIGJ1dCBmb3IgdW5zaWduZWQgbG9uZ3MuCisgKi8KIGludCBnaXRfY29uZmlnX2dldF91bG9uZyhjb25zdCBjaGFyICprZXksIHVuc2lnbmVkIGxvbmcgKmRlc3QpOworCisvKioKKyAqIEZpbmRzIGFuZCBwYXJzZXMgdGhlIHZhbHVlIGludG8gYSBib29sZWFuIHZhbHVlLCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24KKyAqIHZhcmlhYmxlIGBrZXlgIHJlc3BlY3Rpbmcga2V5d29yZHMgbGlrZSAidHJ1ZSIgYW5kICJmYWxzZSIuIEludGVnZXIKKyAqIHZhbHVlcyBhcmUgY29udmVydGVkIGludG8gdHJ1ZS9mYWxzZSB2YWx1ZXMgKHdoZW4gdGhleSBhcmUgbm9uLXplcm8gb3IKKyAqIHplcm8sIHJlc3BlY3RpdmVseSkuIE90aGVyIHZhbHVlcyBjYXVzZSBhIGRpZSgpLiBJZiBwYXJzaW5nIGlzIHN1Y2Nlc3NmdWwsCisgKiBzdG9yZXMgdGhlIHZhbHVlIG9mIHRoZSBwYXJzZWQgcmVzdWx0IGluIGBkZXN0YCBhbmQgcmV0dXJucyAwLiBXaGVuIHRoZQorICogY29uZmlndXJhdGlvbiB2YXJpYWJsZSBga2V5YCBpcyBub3QgZm91bmQsIHJldHVybnMgMSB3aXRob3V0IHRvdWNoaW5nCisgKiBgZGVzdGAuCisgKi8KIGludCBnaXRfY29uZmlnX2dldF9ib29sKGNvbnN0IGNoYXIgKmtleSwgaW50ICpkZXN0KTsKKworLyoqCisgKiBTaW1pbGFyIHRvIGBnaXRfY29uZmlnX2dldF9ib29sYCwgZXhjZXB0IHRoYXQgaW50ZWdlcnMgYXJlIGNvcGllZCBhcy1pcywKKyAqIGFuZCBgaXNfYm9vbGAgZmxhZyBpcyB1bnNldC4KKyAqLwogaW50IGdpdF9jb25maWdfZ2V0X2Jvb2xfb3JfaW50KGNvbnN0IGNoYXIgKmtleSwgaW50ICppc19ib29sLCBpbnQgKmRlc3QpOworCisvKioKKyAqIFNpbWlsYXIgdG8gYGdpdF9jb25maWdfZ2V0X2Jvb2xgLCBleGNlcHQgdGhhdCBpdCByZXR1cm5zIC0xIG9uIGVycm9yCisgKiByYXRoZXIgdGhhbiBkeWluZy4KKyAqLwogaW50IGdpdF9jb25maWdfZ2V0X21heWJlX2Jvb2woY29uc3QgY2hhciAqa2V5LCBpbnQgKmRlc3QpOworCisvKioKKyAqIFNpbWlsYXIgdG8gYGdpdF9jb25maWdfZ2V0X3N0cmluZ2AsIGJ1dCBleHBhbmRzIGB+YCBvciBgfnVzZXJgIGludG8KKyAqIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3Rvcnkgd2hlbiBmb3VuZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXRoLgorICovCiBpbnQgZ2l0X2NvbmZpZ19nZXRfcGF0aG5hbWUoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICoqZGVzdCk7CisKIGludCBnaXRfY29uZmlnX2dldF9pbmRleF90aHJlYWRzKGludCAqZGVzdCk7CiBpbnQgZ2l0X2NvbmZpZ19nZXRfdW50cmFja2VkX2NhY2hlKHZvaWQpOwogaW50IGdpdF9jb25maWdfZ2V0X3NwbGl0X2luZGV4KHZvaWQpOwpAQCAtMjcwLDcgKzU5MywxOSBAQAogCWVudW0gY29uZmlnX3Njb3BlIHNjb3BlOwogfTsKIAorLyoqCisgKiBGaXJzdCBwcmludHMgdGhlIGVycm9yIG1lc3NhZ2Ugc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIgaW4gYGVycmAgYW5kIHRoZW4KKyAqIGRpZXMgcHJpbnRpbmcgdGhlIGxpbmUgbnVtYmVyIGFuZCB0aGUgZmlsZSBuYW1lIG9mIHRoZSBoaWdoZXN0IHByaW9yaXR5CisgKiB2YWx1ZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgYGtleWAuCisgKi8KIE5PUkVUVVJOIHZvaWQgZ2l0X2RpZV9jb25maWcoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICplcnIsIC4uLikgX19hdHRyaWJ1dGVfXygoZm9ybWF0KHByaW50ZiwgMiwgMykpKTsKKworLyoqCisgKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggZm9ybWF0cyB0aGUgZGllIGVycm9yIG1lc3NhZ2UgYWNjb3JkaW5nIHRvIHRoZQorICogcGFyYW1ldGVycyBlbnRlcmVkLiBVc2VkIGJ5IGBnaXRfZGllX2NvbmZpZygpYC4gSXQgY2FuIGJlIHVzZWQgYnkgY2FsbGVycworICogaGFuZGxpbmcgYGdpdF9jb25maWdfZ2V0X3ZhbHVlX211bHRpKClgIHRvIHByaW50IHRoZSBjb3JyZWN0IGVycm9yIG1lc3NhZ2UKKyAqIGZvciB0aGUgZGVzaXJlZCB2YWx1ZS4KKyAqLwogTk9SRVRVUk4gdm9pZCBnaXRfZGllX2NvbmZpZ19saW5lbnIoY29uc3QgY2hhciAqa2V5LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVucik7CiAKICNkZWZpbmUgTE9PS1VQX0NPTkZJRyhtYXBwaW5nLCB2YXIpIFwKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwppbmRleCBhNDNiNDc2Li42NmFlZGI5IDEwMDY0NAotLS0gYS9jb25maWd1cmUuYWMKKysrIGIvY29uZmlndXJlLmFjCkBAIC04NSw3ICs4NSw3IEBACiAKICMgR0lUX1BBUlNFX1dJVEhfU0VUX01BS0VfVkFSKFdJVEhOQU1FLCBWQVIsIEhFTFBfVEVYVCkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgU2V0IFZBUiB0byB0aGUgdmFsdWUgc3BlY2llZCBieSAtLXdpdGgtV0lUSE5BTUUuCisjIFNldCBWQVIgdG8gdGhlIHZhbHVlIHNwZWNpZmllZCBieSAtLXdpdGgtV0lUSE5BTUUuCiAjIE5vIHZlcmlmaWNhdGlvbiBvZiBhcmd1bWVudHMgaXMgcGVyZm9ybWVkLCBidXQgd2FybmluZ3MgYXJlIGlzc3VlZAogIyBpZiBlaXRoZXIgJ3llcycgb3IgJ25vJyBpcyBzcGVjaWZpZWQuCiAjIEhFTFBfVEVYVCBpcyBwcmVzZW50ZWQgd2hlbiAtLWhlbHAgaXMgY2FsbGVkLgpAQCAtODQ0LDEyICs4NDQsNjEgQEAKIEFDX0NPTVBJTEVfSUZFTFNFKFtPTERJQ09OVlRFU1RfU1JDXSwKIAlbQUNfTVNHX1JFU1VMVChbbm9dKV0sCiAJW0FDX01TR19SRVNVTFQoW3llc10pCisJQUNfREVGSU5FKEhBVkVfT0xEX0lDT05WLCAxKQogCU9MRF9JQ09OVj1VbmZvcnR1bmF0ZWx5WWVzXSkKIAogR0lUX1VOU1RBU0hfRkxBR1MoJElDT05WRElSKQogCiBHSVRfQ09ORl9TVUJTVChbT0xEX0lDT05WXSkKIAorIworIyBEZWZpbmUgSUNPTlZfT01JVFNfQk9NIGlmIHlvdSBhcmUgb24gYSBzeXN0ZW0gd2hpY2gKKyMgaWNvbnYgb21pdHMgYm9tIGZvciB1dGYtezE2LDMyfQoraWYgdGVzdCAteiAiJE5PX0lDT05WIjsgdGhlbgorQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgaWNvbnYgb21pdHMgYm9tIGZvciB1dGYtMTYgYW5kIHV0Zi0zMl0sCisgW2FjX2N2X2ljb252X29taXRzX2JvbV0sCitbCitvbGRfTElCUz0iJExJQlMiCitpZiB0ZXN0IC1uICIkTkVFRFNfTElCSUNPTlYiOyB0aGVuCisJTElCUz0iJExJQlMgLWxpY29udiIKK2ZpCisKK0FDX1JVTl9JRkVMU0UoCisJW0FDX0xBTkdfUFJPR1JBTShbQUNfSU5DTFVERVNfREVGQVVMVAorCSNpbmNsdWRlIDxpY29udi5oPgorCSNpZmRlZiBIQVZFX09MRF9JQ09OVgorCXR5cGVkZWYgY29uc3QgY2hhciAqaWNvbnZfaWJwOworCSNlbHNlCisJdHlwZWRlZiBjaGFyICppY29udl9pYnA7CisJI2VuZGlmCisJXSwKKwlbWworCWludCB2OworCWljb252X3QgY29udjsKKwljaGFyIGluW10gPSAiYSI7IGljb252X2licCBwaW4gPSBpbjsKKwljaGFyIG91dFsyMF0gPSAiIjsgY2hhciAqcG91dCA9IG91dDsKKwlzaXplX3QgaXN6ID0gc2l6ZW9mIGluOworCXNpemVfdCBvc3ogPSBzaXplb2Ygb3V0OworCisJY29udiA9IGljb252X29wZW4oIlVURi0xNiIsICJVVEYtOCIpOworCWljb252KGNvbnYsICZwaW4sICZpc3osICZwb3V0LCAmb3N6KTsKKwlpY29udl9jbG9zZShjb252KTsKKwl2ID0gKHVuc2lnbmVkIGNoYXIpKG91dFswXSkgKyAodW5zaWduZWQgY2hhcikob3V0WzFdKTsKKwlyZXR1cm4gdiAhPSAweGZlICsgMHhmZjsKKwldXSldLAorCVthY19jdl9pY29udl9vbWl0c19ib209bm9dLAorCVthY19jdl9pY29udl9vbWl0c19ib209eWVzXSkKKworTElCUz0iJG9sZF9MSUJTIgorXSkKK2lmIHRlc3QgIngkYWNfY3ZfaWNvbnZfb21pdHNfYm9tIiA9IHh5ZXM7IHRoZW4KKwlJQ09OVl9PTUlUU19CT009WWVzCitlbHNlCisJSUNPTlZfT01JVFNfQk9NPQorZmkKK0dJVF9DT05GX1NVQlNUKFtJQ09OVl9PTUlUU19CT01dKQorZmkKKwogIyMgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KIEFDX01TR19OT1RJQ0UoW0NIRUNLUyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3NdKQogIwpkaWZmIC0tZ2l0IGEvY29udHJpYi9jb2NjaW5lbGxlL2NvbW1pdC5jb2NjaSBiL2NvbnRyaWIvY29jY2luZWxsZS9jb21taXQuY29jY2kKaW5kZXggZDAzNDUzMy4uNzc4ZTQ3MCAxMDA2NDQKLS0tIGEvY29udHJpYi9jb2NjaW5lbGxlL2NvbW1pdC5jb2NjaQorKysgYi9jb250cmliL2NvY2NpbmVsbGUvY29tbWl0LmNvY2NpCkBAIC0yMCw3ICsyMCw3IEBACiArIHNldF9jb21taXRfdHJlZShjLCBzKQogICAuLi4+fQogCi0vLyBUaGVzZSBleGNsdWRlZCBmdW5jdGlvbnMgbXVzdCBhY2Nlc3MgYy0+bWF5YmVfdHJlZSBkaXJlY2x5LgorLy8gVGhlc2UgZXhjbHVkZWQgZnVuY3Rpb25zIG11c3QgYWNjZXNzIGMtPm1heWJlX3RyZWUgZGlyZWN0bHkuCiAvLyBOb3RlIHRoYXQgaWYgYy0+bWF5YmVfdHJlZSBpcyB3cml0dGVuIHNvbWV3aGVyZSBvdXRzaWRlIG9mIHRoZXNlCiAvLyBmdW5jdGlvbnMsIHRoZW4gdGhlIHJlY29tbWVuZGVkIHRyYW5zZm9ybWF0aW9uIHdpbGwgYmUgYm9ndXMgd2l0aAogLy8gcmVwb19nZXRfY29tbWl0X3RyZWUoKSBvbiB0aGUgTEhTLgpkaWZmIC0tZ2l0IGEvY29udHJpYi9jb2NjaW5lbGxlL29iamVjdF9pZC5jb2NjaSBiL2NvbnRyaWIvY29jY2luZWxsZS9vYmplY3RfaWQuY29jY2kKaW5kZXggM2U1MzZhOS4uZGRmNGYyMiAxMDA2NDQKLS0tIGEvY29udHJpYi9jb2NjaW5lbGxlL29iamVjdF9pZC5jb2NjaQorKysgYi9jb250cmliL2NvY2NpbmVsbGUvb2JqZWN0X2lkLmNvY2NpCkBAIC0xMywzOCArMTMsNiBAQAogQEAKIHN0cnVjdCBvYmplY3RfaWQgT0lEOwogQEAKLS0gc2hhMV90b19oZXgoT0lELmhhc2gpCi0rIG9pZF90b19oZXgoJk9JRCkKLQotQEAKLWlkZW50aWZpZXIgZiAhPSBvaWRfdG9faGV4Owotc3RydWN0IG9iamVjdF9pZCAqT0lEUFRSOwotQEAKLSAgZiguLi4pIHs8Li4uCi0tIHNoYTFfdG9faGV4KE9JRFBUUi0+aGFzaCkKLSsgb2lkX3RvX2hleChPSURQVFIpCi0gIC4uLj59Ci0KLUBACi1leHByZXNzaW9uIEU7Ci1zdHJ1Y3Qgb2JqZWN0X2lkIE9JRDsKLUBACi0tIHNoYTFfdG9faGV4X3IoRSwgT0lELmhhc2gpCi0rIG9pZF90b19oZXhfcihFLCAmT0lEKQotCi1AQAotaWRlbnRpZmllciBmICE9IG9pZF90b19oZXhfcjsKLWV4cHJlc3Npb24gRTsKLXN0cnVjdCBvYmplY3RfaWQgKk9JRFBUUjsKLUBACi0gICBmKC4uLikgezwuLi4KLS0gc2hhMV90b19oZXhfcihFLCBPSURQVFItPmhhc2gpCi0rIG9pZF90b19oZXhfcihFLCBPSURQVFIpCi0gIC4uLj59Ci0KLUBACi1zdHJ1Y3Qgb2JqZWN0X2lkIE9JRDsKLUBACiAtIGhhc2hjbHIoT0lELmhhc2gpCiArIG9pZGNscigmT0lEKQogCmRpZmYgLS1naXQgYS9jb250cmliL2NvbXBsZXRpb24vZ2l0LWNvbXBsZXRpb24uYmFzaCBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCmluZGV4IDAwZmJlNmMuLmJhNTUyOGQgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCisrKyBiL2NvbnRyaWIvY29tcGxldGlvbi9naXQtY29tcGxldGlvbi5iYXNoCkBAIC01NTAsNyArNTUwLDcgQEAKIAkJCQkJCSBlc2NfaWR4LCAxKQogCQkJfSBlbHNlIGlmIChlc2MgPT0gIm4iKSB7CiAJCQkJIyBVaC1vaCwgYSBuZXdsaW5lIGNoYXJhY3Rlci4KLQkJCQkjIFdlIGNhbnQgcmVsaWFibHkgcHV0IGEgcGF0aG5hbWUKKwkJCQkjIFdlIGNhbm5vdCByZWxpYWJseSBwdXQgYSBwYXRobmFtZQogCQkJCSMgY29udGFpbmluZyBhIG5ld2xpbmUgaW50byBDT01QUkVQTFksCiAJCQkJIyBhbmQgdGhlIG5ld2xpbmUgd291bGQgY3JlYXRlIGEgbWVzcy4KIAkJCQkjIFNraXAgdGhpcyBwYXRoLgpAQCAtNTY1LDcgKzU2NSw3IEBACiAJCQl9CiAJCX0KIAkJIyBEcm9wIGNsb3NpbmcgZG91YmxlIHF1b3RlLCBpZiB0aGVyZSBpcyBvbmUuCi0JCSMgKFRoZXJlIGlzbnQgYW55IGlmIHRoaXMgaXMgYSBkaXJlY3RvcnksIGFzIGl0IHdhcworCQkjIChUaGVyZSBpcyBub3QgYW55IGlmIHRoaXMgaXMgYSBkaXJlY3RvcnksIGFzIGl0IHdhcwogCQkjIGFscmVhZHkgc3RyaXBwZWQgd2l0aCB0aGUgdHJhaWxpbmcgcGF0aCBjb21wb25lbnRzLikKIAkJaWYgKHN1YnN0cihwLCBsZW5ndGgocCksIDEpID09ICJcIiIpCiAJCQlvdXQgPSBvdXQgc3Vic3RyKHAsIDEsIGxlbmd0aChwKSAtIDEpCkBAIC0yMDQzLDYgKzIwNDMsMTAgQEAKIAkJX19naXRjb21wICIkX19naXRfd2hpdGVzcGFjZWxpc3QiICIiICIke2N1ciMjLS13aGl0ZXNwYWNlPX0iCiAJCXJldHVybgogCQk7OworCS0tb250bz0qKQorCQlfX2dpdF9jb21wbGV0ZV9yZWZzIC0tY3VyPSIke2N1ciMjLS1vbnRvPX0iCisJCXJldHVybgorCQk7OwogCS0tKikKIAkJX19naXRjb21wX2J1aWx0aW4gcmViYXNlICIiIFwKIAkJCSIkX19naXRfcmViYXNlX2ludGVyYWN0aXZlX2lucHJvZ3Jlc3Nfb3B0aW9ucyIKZGlmZiAtLWdpdCBhL2NvbnRyaWIvaG9va3MvbXVsdGltYWlsL2dpdF9tdWx0aW1haWwucHkgYi9jb250cmliL2hvb2tzL211bHRpbWFpbC9naXRfbXVsdGltYWlsLnB5CmluZGV4IDg4MjMzOTkuLmY1NjNiZTggMTAwNzU1Ci0tLSBhL2NvbnRyaWIvaG9va3MvbXVsdGltYWlsL2dpdF9tdWx0aW1haWwucHkKKysrIGIvY29udHJpYi9ob29rcy9tdWx0aW1haWwvZ2l0X211bHRpbWFpbC5weQpAQCAtOTUsNyArOTUsNyBAQAogICAgIHVuaWNvZGUgPSBzdHIKIAogICAgIGRlZiB3cml0ZV9zdHIoZiwgbXNnKToKLSAgICAgICAgIyBUcnkgb3V0cHV0aW5nIHdpdGggdGhlIGRlZmF1bHQgZW5jb2RpbmcuIElmIGl0IGZhaWxzLAorICAgICAgICAjIFRyeSBvdXRwdXR0aW5nIHdpdGggdGhlIGRlZmF1bHQgZW5jb2RpbmcuIElmIGl0IGZhaWxzLAogICAgICAgICAjIHRyeSBVVEYtOC4KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZi5idWZmZXIud3JpdGUobXNnLmVuY29kZShzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkpKQpAQCAtMjEyOSw3ICsyMTI5LDcgQEAKICAgICAgICAgICAgICAgICAjIGVxdWl2YWxlbnQgdG8KICAgICAgICAgICAgICAgICAjICAgICBzZWxmLnNtdHAuZWhsbygpCiAgICAgICAgICAgICAgICAgIyAgICAgc2VsZi5zbXRwLnN0YXJ0dGxzKCkKLSAgICAgICAgICAgICAgICAjIHdpdGggYWNjZXMgdG8gdGhlIHNzbCBsYXllcgorICAgICAgICAgICAgICAgICMgd2l0aCBhY2Nlc3MgdG8gdGhlIHNzbCBsYXllcgogICAgICAgICAgICAgICAgIHNlbGYuc210cC5laGxvKCkKICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5zbXRwLmhhc19leHRuKCJzdGFydHRscyIpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBzbXRwbGliLlNNVFBFeGNlcHRpb24oIlNUQVJUVExTIGV4dGVuc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHNlcnZlciIpCkBAIC0yMTQ4LDcgKzIxNDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5lbnZpcm9ubWVudC5nZXRfbG9nZ2VyKCkuZXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAnKioqIFdhcm5pbmcsIHRoZSBzZXJ2ZXIgY2VydGlmaWNhdCBpcyBub3QgdmVyaWZpZWQgKHNtdHApICoqKlxuJworICAgICAgICAgICAgICAgICAgICAgICAgJyoqKiBXYXJuaW5nLCB0aGUgc2VydmVyIGNlcnRpZmljYXRlIGlzIG5vdCB2ZXJpZmllZCAoc210cCkgKioqXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICAnKioqICAgICAgICAgIHNldCB0aGUgb3B0aW9uIHNtdHBDQUNlcnRzICAgICAgICAgICAgICAgICAgICoqKlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYuc210cC5zb2NrLCAicmVhZCIpOgpAQCAtMzE4OSw3ICszMTg5LDcgQEAKICAgICAgICAgc2VsZi5DT01QVVRFRF9LRVlTICs9IFsncHJvamVjdGRlc2MnXQogCiAgICAgZGVmIGdldF9wcm9qZWN0ZGVzYyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgb25lLWxpbmUgZGVzY3JpcGl0aW9uIG9mIHRoZSBwcm9qZWN0LiIiIgorICAgICAgICAiIiJSZXR1cm4gYSBvbmUtbGluZSBkZXNjcmlwdGlvbiBvZiB0aGUgcHJvamVjdC4iIiIKIAogICAgICAgICBnaXRfZGlyID0gZ2V0X2dpdF9kaXIoKQogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL211bHRpbWFpbC9wb3N0LXJlY2VpdmUuZXhhbXBsZSBiL2NvbnRyaWIvaG9va3MvbXVsdGltYWlsL3Bvc3QtcmVjZWl2ZS5leGFtcGxlCmluZGV4IGI5YmIxMTguLjBmOThjNWEgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvaG9va3MvbXVsdGltYWlsL3Bvc3QtcmVjZWl2ZS5leGFtcGxlCisrKyBiL2NvbnRyaWIvaG9va3MvbXVsdGltYWlsL3Bvc3QtcmVjZWl2ZS5leGFtcGxlCkBAIC01Niw3ICs1Niw3IEBACiAKICMgU2V0IHNvbWUgR2l0IGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzLiBFcXVpdmFsZW50IHRvIHBhc3NpbmcgdmFyPXZhbAogIyB0byAiZ2l0IC1jIHZhcj12YWwiIGVhY2ggdGltZSBnaXQgaXMgY2FsbGVkLCBvciB0byBhZGRpbmcgdGhlCi0jIGNvbmZpZ3VyYXRpb24gaW4gLmdpdC9jb25maWcgKG11c3QgY29tZSBiZWZvcmUgaW5zdGFuY2lhdGluZyB0aGUKKyMgY29uZmlndXJhdGlvbiBpbiAuZ2l0L2NvbmZpZyAobXVzdCBjb21lIGJlZm9yZSBpbnN0YW50aWF0aW5nIHRoZQogIyBlbnZpcm9ubWVudCkgOgogI2dpdF9tdWx0aW1haWwuQ29uZmlnLmFkZF9jb25maWdfcGFyYW1ldGVycygnbXVsdGltYWlsaG9vay5jb21taXRFbWFpbEZvcm1hdD1odG1sJykKICNnaXRfbXVsdGltYWlsLkNvbmZpZy5hZGRfY29uZmlnX3BhcmFtZXRlcnMoKCd1c2VyLm5hbWU9Zm9vJywgJ3VzZXIuZW1haWw9Zm9vQGV4YW1wbGUuY29tJykpCmRpZmYgLS1naXQgYS9jb250cmliL2hvb2tzL3Bvc3QtcmVjZWl2ZS1lbWFpbCBiL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsCmluZGV4IDg3NDdiODQuLmZmNTY1ZWIgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsCisrKyBiL2NvbnRyaWIvaG9va3MvcG9zdC1yZWNlaXZlLWVtYWlsCkBAIC0zMjksNyArMzI5LDcgQEAKIAkjCiAJIyAgZ2l0IHJldi1wYXJzZSAtLW5vdCAtLWFsbCB8IGdyZXAgLXYgJChnaXQgcmV2LXBhcnNlICRyZWZuYW1lKQogCSMKLQkjIEdldCdzIHVzIHRvIHNvbWV0aGluZyBwcmV0dHkgc2FmZSAoYXBhcnQgZnJvbSB0aGUgc21hbGwgdGltZQorCSMgR2V0cyB1cyB0byBzb21ldGhpbmcgcHJldHR5IHNhZmUgKGFwYXJ0IGZyb20gdGhlIHNtYWxsIHRpbWUKIAkjIGJldHdlZW4gcmVmbmFtZSBiZWluZyByZWFkLCBhbmQgZ2l0IHJldi1wYXJzZSBydW5uaW5nIC0gZm9yIHRoYXQsCiAJIyBJIGdpdmUgdXApCiAJIwpkaWZmIC0tZ2l0IGEvY29udHJpYi9ob29rcy91cGRhdGUtcGFyYW5vaWQgYi9jb250cmliL2hvb2tzL3VwZGF0ZS1wYXJhbm9pZAppbmRleCBkMThiMzE3Li4wMDkyZDY3IDEwMDc1NQotLS0gYS9jb250cmliL2hvb2tzL3VwZGF0ZS1wYXJhbm9pZAorKysgYi9jb250cmliL2hvb2tzL3VwZGF0ZS1wYXJhbm9pZApAQCAtNDksNyArNDksNyBAQAogUmVwb3NpdG9yeSBzZWN0aW9ucyBhcmUgbWF0Y2hlZCBvbiB0aGUgYmFzZW5hbWUgb2YgdGhlIHJlcG9zaXRvcnkKIChhZnRlciByZW1vdmluZyB0aGUgLmdpdCBzdWZmaXgpLgogCi1UaGUgb3Bjb2RlIGFiYnJldmF0aW9ucyBhcmU6CitUaGUgb3Bjb2RlIGFiYnJldmlhdGlvbnMgYXJlOgogCiAgIEM6IGNyZWF0ZSBuZXcgcmVmCiAgIEQ6IGRlbGV0ZSBleGlzdGluZyByZWYKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0Ly5wZXJsY3JpdGljcmMgYi9jb250cmliL213LXRvLWdpdC8ucGVybGNyaXRpY3JjCmluZGV4IDE1ODk1OGQuLmI3MzMzMjYgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvbXctdG8tZ2l0Ly5wZXJsY3JpdGljcmMKKysrIGIvY29udHJpYi9tdy10by1naXQvLnBlcmxjcml0aWNyYwpAQCAtMTQsNyArMTQsNyBAQAogCiAjIFRoaXMgcnVsZSBzdGF0ZXMgdGhhdCBlYWNoIHN5c3RlbSBjYWxsIHNob3VsZCBoYXZlIGl0cyByZXR1cm4gdmFsdWUgY2hlY2tlZAogIyBUaGUgcHJvYmxlbSBpcyB0aGF0IGl0IGluY2x1ZGVzIHRoZSBwcmludCBjYWxsLiBDaGVja2luZyBldmVyeSBwcmludCBjYWxsJ3MKLSMgcmV0dXJuIHZhbHVlIHdvdWxkIGJlIGhhcm1mdWwgdG8gdGhlIGNvZGUgcmVhZGFiaWx0eS4KKyMgcmV0dXJuIHZhbHVlIHdvdWxkIGJlIGhhcm1mdWwgdG8gdGhlIGNvZGUgcmVhZGFiaWxpdHkuCiAjIFRoaXMgY29uZmlndXJhdGlvbiBrZWVwcyBhbGwgZGVmYXVsdCBmdW5jdGlvbiBidXQgcHJpbnQuCiBbSW5wdXRPdXRwdXQ6OlJlcXVpcmVDaGVja2VkU3lzY2FsbHNdCiBmdW5jdGlvbnMgPSBvcGVuIHNheSBjbG9zZQpkaWZmIC0tZ2l0IGEvY29udHJpYi9tdy10by1naXQvZ2l0LXJlbW90ZS1tZWRpYXdpa2kucGVybCBiL2NvbnRyaWIvbXctdG8tZ2l0L2dpdC1yZW1vdGUtbWVkaWF3aWtpLnBlcmwKaW5kZXggYWY5Y2JjOS4uZDhmZjJlNiAxMDA3NTUKLS0tIGEvY29udHJpYi9tdy10by1naXQvZ2l0LXJlbW90ZS1tZWRpYXdpa2kucGVybAorKysgYi9jb250cmliL213LXRvLWdpdC9naXQtcmVtb3RlLW1lZGlhd2lraS5wZXJsCkBAIC03OSw3ICs3OSw3IEBACiAkZXhwb3J0X21lZGlhID0gISgkZXhwb3J0X21lZGlhIGVxICdmYWxzZScpOwogCiBteSAkd2lraV9sb2dpbiA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCByZW1vdGUuJHtyZW1vdGVuYW1lfS5td0xvZ2luIik7Ci0jIE5vdGU6IG13UGFzc3dvcmQgaXMgZGlzY291cnJhZ2VkLiBVc2UgdGhlIGNyZWRlbnRpYWwgc3lzdGVtIGluc3RlYWQuCisjIE5vdGU6IG13UGFzc3dvcmQgaXMgZGlzY291cmFnZWQuIFVzZSB0aGUgY3JlZGVudGlhbCBzeXN0ZW0gaW5zdGVhZC4KIG15ICR3aWtpX3Bhc3N3ZCA9IHJ1bl9naXQoImNvbmZpZyAtLWdldCByZW1vdGUuJHtyZW1vdGVuYW1lfS5td1Bhc3N3b3JkIik7CiBteSAkd2lraV9kb21haW4gPSBydW5fZ2l0KCJjb25maWcgLS1nZXQgcmVtb3RlLiR7cmVtb3RlbmFtZX0ubXdEb21haW4iKTsKIGNob21wKCR3aWtpX2xvZ2luKTsKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvaW5zdGFsbC13aWtpL2RiX2luc3RhbGwucGhwIGIvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kvZGJfaW5zdGFsbC5waHAKaW5kZXggMGYzZjRlMC4uYjAzMzg0OSAxMDA2NDQKLS0tIGEvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kvZGJfaW5zdGFsbC5waHAKKysrIGIvY29udHJpYi9tdy10by1naXQvdC9pbnN0YWxsLXdpa2kvZGJfaW5zdGFsbC5waHAKQEAgLTI0LDcgKzI0LDcgQEAKICRkYl9kaXIgPSB1cmxlbmNvZGUoJHRtcCk7CiAkdG1wX2Nvb2tpZSA9IHRlbXBuYW0oJHRtcCwgIkNPT0tJRV8iKTsKIC8qCi0gKiBGZXRjaHMgYSBwYWdlIHdpdGggY1VSTC4KKyAqIEZldGNoZXMgYSBwYWdlIHdpdGggY1VSTC4KICAqLwogZnVuY3Rpb24gZ2V0KCRwYWdlX25hbWUgPSAiIikgewogCSRjdXJsID0gY3VybF9pbml0KCk7CmRpZmYgLS1naXQgYS9jb250cmliL213LXRvLWdpdC90L3Q5MzYwLW13LXRvLWdpdC1jbG9uZS5zaCBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdDkzNjAtbXctdG8tZ2l0LWNsb25lLnNoCmluZGV4IGNmYmZlN2QuLjkxMDY4MzMgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvdDkzNjAtbXctdG8tZ2l0LWNsb25lLnNoCisrKyBiL2NvbnRyaWIvbXctdG8tZ2l0L3QvdDkzNjAtbXctdG8tZ2l0LWNsb25lLnNoCkBAIC0xNDMsNyArMTQzLDcgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0dpdCBjbG9uZSB3b3JrcyB3aXRoIG11bHRpcGxlIHNwZWNpZmljIHBhZ2UgY2xvbmVkICcgJwogCXdpa2lfcmVzZXQgJiYKIAl3aWtpX2VkaXRwYWdlIGZvbyAiSSB3aWxsIGJlIHRoZXJlIiBmYWxzZSAmJgotCXdpa2lfZWRpdHBhZ2UgYmFyICJJIHdpbGwgbm90IGRpc2FwZWFyIiBmYWxzZSAmJgorCXdpa2lfZWRpdHBhZ2UgYmFyICJJIHdpbGwgbm90IGRpc2FwcGVhciIgZmFsc2UgJiYKIAl3aWtpX2VkaXRwYWdlIG5hbW5hbSAiSSBiZSBlcmFzZWQiIGZhbHNlICYmCiAJd2lraV9lZGl0cGFnZSBueWFuY2F0ICJueWFuIG55YW4gbnlhbiB5b3Ugd2lsbCBub3QgZXJhc2UgbWUiIGZhbHNlICYmCiAJd2lraV9kZWxldGVfcGFnZSBuYW1uYW0gJiYKZGlmZiAtLWdpdCBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC1naXRtdy1saWIuc2ggYi9jb250cmliL213LXRvLWdpdC90L3Rlc3QtZ2l0bXctbGliLnNoCmluZGV4IDY1NDYyOTQuLjM5NDhhMDAgMTAwNzU1Ci0tLSBhL2NvbnRyaWIvbXctdG8tZ2l0L3QvdGVzdC1naXRtdy1saWIuc2gKKysrIGIvY29udHJpYi9tdy10by1naXQvdC90ZXN0LWdpdG13LWxpYi5zaApAQCAtMjc5LDcgKzI3OSw3IEBACiAJIiRMSUdIVFRQRF9ESVIiL2xpZ2h0dHBkIC1mICIkV0VCIi9saWdodHRwZC5jb25mCiAKIAlpZiB0ZXN0ICQ/IC1uZSAwIDsgdGhlbgotCQllY2hvICJDb3VsZCBub3QgZXhlY3V0ZSBodHRwIGRlYW1vbiBsaWdodHRwZCIKKwkJZWNobyAiQ291bGQgbm90IGV4ZWN1dGUgaHR0cCBkYWVtb24gbGlnaHR0cGQiCiAJCWV4aXQgMQogCWZpCiB9CmRpZmYgLS1naXQgYS9jb250cmliL3N2bi1mZS9zdm5yZHVtcF9zaW0ucHkgYi9jb250cmliL3N2bi1mZS9zdm5yZHVtcF9zaW0ucHkKaW5kZXggNTBjNmE0Zi4uOGEzY2VlNiAxMDA3NTUKLS0tIGEvY29udHJpYi9zdm4tZmUvc3ZucmR1bXBfc2ltLnB5CisrKyBiL2NvbnRyaWIvc3ZuLWZlL3N2bnJkdW1wX3NpbS5weQpAQCAtNTQsNyArNTQsNyBAQAogICAgICAgICBwcmludCgidXNhZ2U6ICVzIGR1bXAgVVJMIC1yTE9XRVI6VVBQRVIiKQogICAgICAgICBzeXMuZXhpdCgxKQogICAgIGlmIG5vdCBzeXMuYXJndlsxXSA9PSAnZHVtcCc6Ci0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ29ubHkgImR1bXAiIGlzIHN1cHBwb3J0ZWQuJykKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcignb25seSAiZHVtcCIgaXMgc3VwcG9ydGVkLicpCiAgICAgdXJsID0gc3lzLmFyZ3ZbMl0KICAgICByID0gKCcwJywgJ0hFQUQnKQogICAgIGlmIGxlbihzeXMuYXJndikgPT0gNCBhbmQgc3lzLmFyZ3ZbM11bMDoyXSA9PSAnLXInOgpkaWZmIC0tZ2l0IGEvY29udmVydC5jIGIvY29udmVydC5jCmluZGV4IDI1YWM1MjUuLjc5N2UwYmQgMTAwNjQ0Ci0tLSBhL2NvbnZlcnQuYworKysgYi9jb252ZXJ0LmMKQEAgLTI3MCw4ICsyNzAsMTIgQEAKIHN0YXRpYyBpbnQgdmFsaWRhdGVfZW5jb2RpbmcoY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqZW5jLAogCQkgICAgICBjb25zdCBjaGFyICpkYXRhLCBzaXplX3QgbGVuLCBpbnQgZGllX29uX2Vycm9yKQogeworCWNvbnN0IGNoYXIgKnN0cmlwcGVkOworCiAJLyogV2Ugb25seSBjaGVjayBmb3IgVVRGIGhlcmUgYXMgVVRGPz8gY2FuIGJlIGFuIGFsaWFzIGZvciBVVEYtPz8gKi8KLQlpZiAoaXN0YXJ0c193aXRoKGVuYywgIlVURiIpKSB7CisJaWYgKHNraXBfaXByZWZpeChlbmMsICJVVEYiLCAmc3RyaXBwZWQpKSB7CisJCXNraXBfcHJlZml4KHN0cmlwcGVkLCAiLSIsICZzdHJpcHBlZCk7CisKIAkJLyoKIAkJICogQ2hlY2sgZm9yIGRldGVjdGFibGUgZXJyb3JzIGluIFVURiBlbmNvZGluZ3MKIAkJICovCkBAIC0yODUsMTUgKzI4OSwxMCBAQAogCQkJICovCiAJCQljb25zdCBjaGFyICphZHZpc2VfbXNnID0gXygKIAkJCQkiVGhlIGZpbGUgJyVzJyBjb250YWlucyBhIGJ5dGUgb3JkZXIgIgotCQkJCSJtYXJrIChCT00pLiBQbGVhc2UgdXNlIFVURi0lcyBhcyAiCisJCQkJIm1hcmsgKEJPTSkuIFBsZWFzZSB1c2UgVVRGLSUuKnMgYXMgIgogCQkJCSJ3b3JraW5nLXRyZWUtZW5jb2RpbmcuIik7Ci0JCQljb25zdCBjaGFyICpzdHJpcHBlZCA9IE5VTEw7Ci0JCQljaGFyICp1cHBlciA9IHhzdHJkdXBfdG91cHBlcihlbmMpOwotCQkJdXBwZXJbc3RybGVuKHVwcGVyKS0yXSA9ICdcMCc7Ci0JCQlpZiAoc2tpcF9wcmVmaXgodXBwZXIsICJVVEYiLCAmc3RyaXBwZWQpKQotCQkJCXNraXBfcHJlZml4KHN0cmlwcGVkLCAiLSIsICZzdHJpcHBlZCk7Ci0JCQlhZHZpc2UoYWR2aXNlX21zZywgcGF0aCwgc3RyaXBwZWQpOwotCQkJZnJlZSh1cHBlcik7CisJCQlpbnQgc3RyaXBwZWRfbGVuID0gc3RybGVuKHN0cmlwcGVkKSAtIHN0cmxlbigiQkUiKTsKKwkJCWFkdmlzZShhZHZpc2VfbXNnLCBwYXRoLCBzdHJpcHBlZF9sZW4sIHN0cmlwcGVkKTsKIAkJCWlmIChkaWVfb25fZXJyb3IpCiAJCQkJZGllKGVycm9yX21zZywgcGF0aCwgZW5jKTsKIAkJCWVsc2UgewpAQCAtMzA4LDEyICszMDcsNyBAQAogCQkJCSJtYXJrIChCT00pLiBQbGVhc2UgdXNlIFVURi0lc0JFIG9yIFVURi0lc0xFICIKIAkJCQkiKGRlcGVuZGluZyBvbiB0aGUgYnl0ZSBvcmRlcikgYXMgIgogCQkJCSJ3b3JraW5nLXRyZWUtZW5jb2RpbmcuIik7Ci0JCQljb25zdCBjaGFyICpzdHJpcHBlZCA9IE5VTEw7Ci0JCQljaGFyICp1cHBlciA9IHhzdHJkdXBfdG91cHBlcihlbmMpOwotCQkJaWYgKHNraXBfcHJlZml4KHVwcGVyLCAiVVRGIiwgJnN0cmlwcGVkKSkKLQkJCQlza2lwX3ByZWZpeChzdHJpcHBlZCwgIi0iLCAmc3RyaXBwZWQpOwogCQkJYWR2aXNlKGFkdmlzZV9tc2csIHBhdGgsIHN0cmlwcGVkLCBzdHJpcHBlZCk7Ci0JCQlmcmVlKHVwcGVyKTsKIAkJCWlmIChkaWVfb25fZXJyb3IpCiAJCQkJZGllKGVycm9yX21zZywgcGF0aCwgZW5jKTsKIAkJCWVsc2UgewpAQCAtNDE4LDcgKzQxMiw3IEBACiAJaWYgKCFkc3QpIHsKIAkJLyoKIAkJICogV2UgY291bGQgYWRkIHRoZSBibG9iICJhcy1pcyIgdG8gR2l0LiBIb3dldmVyLCBvbiBjaGVja291dAotCQkgKiB3ZSB3b3VsZCB0cnkgdG8gcmVlbmNvZGUgdG8gdGhlIG9yaWdpbmFsIGVuY29kaW5nLiBUaGlzCisJCSAqIHdlIHdvdWxkIHRyeSB0byByZS1lbmNvZGUgdG8gdGhlIG9yaWdpbmFsIGVuY29kaW5nLiBUaGlzCiAJCSAqIHdvdWxkIGZhaWwgYW5kIHdlIHdvdWxkIGxlYXZlIHRoZSB1c2VyIHdpdGggYSBtZXNzZWQtdXAKIAkJICogd29ya2luZyB0cmVlLiBMZXQncyB0cnkgdG8gYXZvaWQgdGhpcyBieSBzY3JlYW1pbmcgbG91ZC4KIAkJICovCmRpZmYgLS1naXQgYS9kYWVtb24uYyBiL2RhZW1vbi5jCmluZGV4IDlkMmUwZDIuLmZkNjY5ZWQgMTAwNjQ0Ci0tLSBhL2RhZW1vbi5jCisrKyBiL2RhZW1vbi5jCkBAIC01OTgsNyArNTk4LDcgQEAKICAqIFJlYWQgdGhlIGhvc3QgYXMgc3VwcGxpZWQgYnkgdGhlIGNsaWVudCBjb25uZWN0aW9uLgogICoKICAqIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIE5VTCBieXRlIHRlcm1pbmF0aW5nIHRoZSBob3N0Ci0gKiBhcmd1ZW1udCwgb3IgJ2V4dHJhX2FyZ3MnIGlmIHRoZXJlIGlzIG5vIGhvc3QgYXJndWVtbnQuCisgKiBhcmd1bWVudCwgb3IgJ2V4dHJhX2FyZ3MnIGlmIHRoZXJlIGlzIG5vIGhvc3QgYXJndW1lbnQuCiAgKi8KIHN0YXRpYyBjaGFyICpwYXJzZV9ob3N0X2FyZyhzdHJ1Y3QgaG9zdGluZm8gKmhpLCBjaGFyICpleHRyYV9hcmdzLCBpbnQgYnVmbGVuKQogewpAQCAtNjUyLDcgKzY1Miw3IEBACiAJCSAqIHNlcnZpY2UgdGhhdCB3aWxsIGJlIHJ1bi4KIAkJICoKIAkJICogSWYgdGhlcmUgZW5kcyB1cCBiZWluZyBhIHBhcnRpY3VsYXIgYXJnIGluIHRoZSBmdXR1cmUgdGhhdAotCQkgKiBnaXQtZGFlbW9uIG5lZWRzIHRvIHBhcnNlIHNwZWNpZmljbHkgKGxpa2UgdGhlICdob3N0JyBhcmcpCisJCSAqIGdpdC1kYWVtb24gbmVlZHMgdG8gcGFyc2Ugc3BlY2lmaWNhbGx5IChsaWtlIHRoZSAnaG9zdCcgYXJnKQogCQkgKiB0aGVuIGl0IGNhbiBiZSBwYXJzZWQgaGVyZSBhbmQgbm90IGFkZGVkIHRvICdnaXRfcHJvdG9jb2wnLgogCQkgKi8KIAkJaWYgKCphcmcpIHsKZGlmZiAtLWdpdCBhL2RpZmYuYyBiL2RpZmYuYwppbmRleCBhZmU0NDAwLi4wODcyMTM0IDEwMDY0NAotLS0gYS9kaWZmLmMKKysrIGIvZGlmZi5jCkBAIC0yNTUxLDcgKzI1NTEsNyBAQAogCS8qCiAJICogbWFrZSBzdXJlIHRoYXQgYXQgbGVhc3Qgb25lICctJyBvciAnKycgaXMgcHJpbnRlZCBpZgogCSAqIHRoZXJlIGlzIGFueSBjaGFuZ2UgdG8gdGhpcyBwYXRoLiBUaGUgZWFzaWVzdCB3YXkgaXMgdG8KLQkgKiBzY2FsZSBsaW5lYXJseSBhcyBpZiB0aGUgYWxsb3RlZCB3aWR0aCBpcyBvbmUgY29sdW1uIHNob3J0ZXIKKwkgKiBzY2FsZSBsaW5lYXJseSBhcyBpZiB0aGUgYWxsb3R0ZWQgd2lkdGggaXMgb25lIGNvbHVtbiBzaG9ydGVyCiAJICogdGhhbiBpdCBpcywgYW5kIHRoZW4gYWRkIDEgdG8gdGhlIHJlc3VsdC4KIAkgKi8KIAlyZXR1cm4gMSArIChpdCAqICh3aWR0aCAtIDEpIC8gbWF4X2NoYW5nZSk7CkBAIC0zMTk2LDcgKzMxOTYsNyBAQAogCWZvciAoY250ID0gMTsgY250IDwgbWFya2VyX3NpemU7IGNudCsrKQogCQlpZiAobGluZVtjbnRdICE9IGZpcnN0Y2hhcikKIAkJCXJldHVybiAwOwotCS8qIGxpbmVbMV0gdGhydSBsaW5lW21hcmtlcl9zaXplLTFdIGFyZSBzYW1lIGFzIGZpcnN0Y2hhciAqLworCS8qIGxpbmVbMV0gdGhyb3VnaCBsaW5lW21hcmtlcl9zaXplLTFdIGFyZSBzYW1lIGFzIGZpcnN0Y2hhciAqLwogCWlmIChsZW4gPCBtYXJrZXJfc2l6ZSArIDEgfHwgIWlzc3BhY2UobGluZVttYXJrZXJfc2l6ZV0pKQogCQlyZXR1cm4gMDsKIAlyZXR1cm4gMTsKZGlmZiAtLWdpdCBhL2Rpci5jIGIvZGlyLmMKaW5kZXggNjFmNTU5ZjkuLjkwNDczNzMgMTAwNjQ0Ci0tLSBhL2Rpci5jCisrKyBiL2Rpci5jCkBAIC0yNDg5LDcgKzI0ODksNyBAQAogCQkJCSAqIHdhbnRlZCBhbnl3YXkKIAkJCQkgKi8KIAkJCQljb250aW51ZTsKLQkJCS8qIGZhbGwgdGhydSAqLworCQkJLyogZmFsbCB0aHJvdWdoICovCiAJCX0gZWxzZSBpZiAoU19JU0RJUihzdC5zdF9tb2RlKSkgewogCQkJaWYgKCFyZW1vdmVfZGlyX3JlY3Vyc2UocGF0aCwgZmxhZywgJmtlcHRfZG93bikpCiAJCQkJY29udGludWU7IC8qIGhhcHB5ICovCmRpZmYgLS1naXQgYS9mZXRjaC1wYWNrLmMgYi9mZXRjaC1wYWNrLmMKaW5kZXggNDkwYjExMS4uYmE5MjU4NyAxMDA2NDQKLS0tIGEvZmV0Y2gtcGFjay5jCisrKyBiL2ZldGNoLXBhY2suYwpAQCAtNzU3LDggKzc1NywzMyBAQAogCXJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyB2b2lkIHdyaXRlX3Byb21pc29yX2ZpbGUoY29uc3QgY2hhciAqa2VlcF9uYW1lLAorCQkJCXN0cnVjdCByZWYgKipzb3VnaHQsIGludCBucl9zb3VnaHQpCit7CisJc3RydWN0IHN0cmJ1ZiBwcm9taXNvcl9uYW1lID0gU1RSQlVGX0lOSVQ7CisJaW50IHN1ZmZpeF9zdHJpcHBlZDsKKwlGSUxFICpvdXRwdXQ7CisJaW50IGk7CisKKwlzdHJidWZfYWRkc3RyKCZwcm9taXNvcl9uYW1lLCBrZWVwX25hbWUpOworCXN1ZmZpeF9zdHJpcHBlZCA9IHN0cmJ1Zl9zdHJpcF9zdWZmaXgoJnByb21pc29yX25hbWUsICIua2VlcCIpOworCWlmICghc3VmZml4X3N0cmlwcGVkKQorCQlCVUcoIm5hbWUgb2YgcGFjayBsb2NrZmlsZSBzaG91bGQgZW5kIHdpdGggLmtlZXAgKHdhcyAnJXMnKSIsCisJCSAgICBrZWVwX25hbWUpOworCXN0cmJ1Zl9hZGRzdHIoJnByb21pc29yX25hbWUsICIucHJvbWlzb3IiKTsKKworCW91dHB1dCA9IHhmb3Blbihwcm9taXNvcl9uYW1lLmJ1ZiwgInciKTsKKwlmb3IgKGkgPSAwOyBpIDwgbnJfc291Z2h0OyBpKyspCisJCWZwcmludGYob3V0cHV0LCAiJXMgJXNcbiIsIG9pZF90b19oZXgoJnNvdWdodFtpXS0+b2xkX29pZCksCisJCQlzb3VnaHRbaV0tPm5hbWUpOworCWZjbG9zZShvdXRwdXQpOworCisJc3RyYnVmX3JlbGVhc2UoJnByb21pc29yX25hbWUpOworfQorCiBzdGF0aWMgaW50IGdldF9wYWNrKHN0cnVjdCBmZXRjaF9wYWNrX2FyZ3MgKmFyZ3MsCi0JCSAgICBpbnQgeGRbMl0sIGNoYXIgKipwYWNrX2xvY2tmaWxlKQorCQkgICAgaW50IHhkWzJdLCBjaGFyICoqcGFja19sb2NrZmlsZSwKKwkJICAgIHN0cnVjdCByZWYgKipzb3VnaHQsIGludCBucl9zb3VnaHQpCiB7CiAJc3RydWN0IGFzeW5jIGRlbXV4OwogCWludCBkb19rZWVwID0gYXJncy0+a2VlcF9wYWNrOwpAQCAtODIwLDcgKzg0NSwxMyBAQAogCQl9CiAJCWlmIChhcmdzLT5jaGVja19zZWxmX2NvbnRhaW5lZF9hbmRfY29ubmVjdGVkKQogCQkJYXJndl9hcnJheV9wdXNoKCZjbWQuYXJncywgIi0tY2hlY2stc2VsZi1jb250YWluZWQtYW5kLWNvbm5lY3RlZCIpOwotCQlpZiAoYXJncy0+ZnJvbV9wcm9taXNvcikKKwkJLyoKKwkJICogSWYgd2UncmUgb2J0YWluaW5nIHRoZSBmaWxlbmFtZSBvZiBhIGxvY2tmaWxlLCB3ZSdsbCB1c2UKKwkJICogdGhhdCBmaWxlbmFtZSB0byB3cml0ZSBhIC5wcm9taXNvciBmaWxlIHdpdGggbW9yZQorCQkgKiBpbmZvcm1hdGlvbiBiZWxvdy4gSWYgbm90LCB3ZSBuZWVkIGluZGV4LXBhY2sgdG8gZG8gaXQgZm9yCisJCSAqIHVzLgorCQkgKi8KKwkJaWYgKCEoZG9fa2VlcCAmJiBwYWNrX2xvY2tmaWxlKSAmJiBhcmdzLT5mcm9tX3Byb21pc29yKQogCQkJYXJndl9hcnJheV9wdXNoKCZjbWQuYXJncywgIi0tcHJvbWlzb3IiKTsKIAl9CiAJZWxzZSB7CkBAIC04NzQsNiArOTA1LDE0IEBACiAJCWRpZShfKCIlcyBmYWlsZWQiKSwgY21kX25hbWUpOwogCWlmICh1c2Vfc2lkZWJhbmQgJiYgZmluaXNoX2FzeW5jKCZkZW11eCkpCiAJCWRpZShfKCJlcnJvciBpbiBzaWRlYmFuZCBkZW11bHRpcGxleGVyIikpOworCisJLyoKKwkgKiBOb3cgdGhhdCBpbmRleC1wYWNrIGhhcyBzdWNjZWVkZWQsIHdyaXRlIHRoZSBwcm9taXNvciBmaWxlIHVzaW5nIHRoZQorCSAqIG9idGFpbmVkIC5rZWVwIGZpbGVuYW1lIGlmIG5lY2Vzc2FyeQorCSAqLworCWlmIChkb19rZWVwICYmIHBhY2tfbG9ja2ZpbGUgJiYgYXJncy0+ZnJvbV9wcm9taXNvcikKKwkJd3JpdGVfcHJvbWlzb3JfZmlsZSgqcGFja19sb2NrZmlsZSwgc291Z2h0LCBucl9zb3VnaHQpOworCiAJcmV0dXJuIDA7CiB9CiAKQEAgLTEwMTYsNyArMTA1NSw3IEBACiAJCWFsdGVybmF0ZV9zaGFsbG93X2ZpbGUgPSBzZXR1cF90ZW1wb3Jhcnlfc2hhbGxvdyhzaS0+c2hhbGxvdyk7CiAJZWxzZQogCQlhbHRlcm5hdGVfc2hhbGxvd19maWxlID0gTlVMTDsKLQlpZiAoZ2V0X3BhY2soYXJncywgZmQsIHBhY2tfbG9ja2ZpbGUpKQorCWlmIChnZXRfcGFjayhhcmdzLCBmZCwgcGFja19sb2NrZmlsZSwgc291Z2h0LCBucl9zb3VnaHQpKQogCQlkaWUoXygiZ2l0IGZldGNoLXBhY2s6IGZldGNoIGZhaWxlZC4iKSk7CiAKICBhbGxfZG9uZToKQEAgLTE0ODIsNyArMTUyMSw3IEBACiAKIAkJCS8qIGdldCB0aGUgcGFjayAqLwogCQkJcHJvY2Vzc19zZWN0aW9uX2hlYWRlcigmcmVhZGVyLCAicGFja2ZpbGUiLCAwKTsKLQkJCWlmIChnZXRfcGFjayhhcmdzLCBmZCwgcGFja19sb2NrZmlsZSkpCisJCQlpZiAoZ2V0X3BhY2soYXJncywgZmQsIHBhY2tfbG9ja2ZpbGUsIHNvdWdodCwgbnJfc291Z2h0KSkKIAkJCQlkaWUoXygiZ2l0IGZldGNoLXBhY2s6IGZldGNoIGZhaWxlZC4iKSk7CiAKIAkJCXN0YXRlID0gRkVUQ0hfRE9ORTsKZGlmZiAtLWdpdCBhL2ZzY2suYyBiL2ZzY2suYwppbmRleCBjZGI3ZDhkLi5hYzRiYTRjIDEwMDY0NAotLS0gYS9mc2NrLmMKKysrIGIvZnNjay5jCkBAIC00MywyMSArNDMsMTcgQEAKIAlGVU5DKE1JU1NJTkdfQVVUSE9SLCBFUlJPUikgXAogCUZVTkMoTUlTU0lOR19DT01NSVRURVIsIEVSUk9SKSBcCiAJRlVOQyhNSVNTSU5HX0VNQUlMLCBFUlJPUikgXAotCUZVTkMoTUlTU0lOR19HUkFGVCwgRVJST1IpIFwKIAlGVU5DKE1JU1NJTkdfTkFNRV9CRUZPUkVfRU1BSUwsIEVSUk9SKSBcCiAJRlVOQyhNSVNTSU5HX09CSkVDVCwgRVJST1IpIFwKLQlGVU5DKE1JU1NJTkdfUEFSRU5ULCBFUlJPUikgXAogCUZVTkMoTUlTU0lOR19TUEFDRV9CRUZPUkVfREFURSwgRVJST1IpIFwKIAlGVU5DKE1JU1NJTkdfU1BBQ0VfQkVGT1JFX0VNQUlMLCBFUlJPUikgXAogCUZVTkMoTUlTU0lOR19UQUcsIEVSUk9SKSBcCiAJRlVOQyhNSVNTSU5HX1RBR19FTlRSWSwgRVJST1IpIFwKLQlGVU5DKE1JU1NJTkdfVEFHX09CSkVDVCwgRVJST1IpIFwKIAlGVU5DKE1JU1NJTkdfVFJFRSwgRVJST1IpIFwKIAlGVU5DKE1JU1NJTkdfVFJFRV9PQkpFQ1QsIEVSUk9SKSBcCiAJRlVOQyhNSVNTSU5HX1RZUEUsIEVSUk9SKSBcCiAJRlVOQyhNSVNTSU5HX1RZUEVfRU5UUlksIEVSUk9SKSBcCiAJRlVOQyhNVUxUSVBMRV9BVVRIT1JTLCBFUlJPUikgXAotCUZVTkMoVEFHX09CSkVDVF9OT1RfVEFHLCBFUlJPUikgXAogCUZVTkMoVFJFRV9OT1RfU09SVEVELCBFUlJPUikgXAogCUZVTkMoVU5LTk9XTl9UWVBFLCBFUlJPUikgXAogCUZVTkMoWkVST19QQURERURfREFURSwgRVJST1IpIFwKQEAgLTI4MSwxNCArMjc3LDE2IEBACiAJc3RyYnVmX2FkZHN0cihzYiwgIjogIik7CiB9CiAKLXN0YXRpYyBpbnQgb2JqZWN0X29uX3NraXBsaXN0KHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdHMsIHN0cnVjdCBvYmplY3QgKm9iaikKK3N0YXRpYyBpbnQgb2JqZWN0X29uX3NraXBsaXN0KHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdHMsCisJCQkgICAgICBjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQpCiB7Ci0JcmV0dXJuIG9wdHMgJiYgb2JqICYmIG9pZHNldF9jb250YWlucygmb3B0cy0+c2tpcGxpc3QsICZvYmotPm9pZCk7CisJcmV0dXJuIG9wdHMgJiYgb2lkICYmIG9pZHNldF9jb250YWlucygmb3B0cy0+c2tpcGxpc3QsIG9pZCk7CiB9CiAKLV9fYXR0cmlidXRlX18oKGZvcm1hdCAocHJpbnRmLCA0LCA1KSkpCi1zdGF0aWMgaW50IHJlcG9ydChzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zLCBzdHJ1Y3Qgb2JqZWN0ICpvYmplY3QsCi0JZW51bSBmc2NrX21zZ19pZCBpZCwgY29uc3QgY2hhciAqZm10LCAuLi4pCitfX2F0dHJpYnV0ZV9fKChmb3JtYXQgKHByaW50ZiwgNSwgNikpKQorc3RhdGljIGludCByZXBvcnQoc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9ucywKKwkJICBjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQsIGVudW0gb2JqZWN0X3R5cGUgb2JqZWN0X3R5cGUsCisJCSAgZW51bSBmc2NrX21zZ19pZCBpZCwgY29uc3QgY2hhciAqZm10LCAuLi4pCiB7CiAJdmFfbGlzdCBhcDsKIAlzdHJ1Y3Qgc3RyYnVmIHNiID0gU1RSQlVGX0lOSVQ7CkBAIC0yOTcsNyArMjk1LDcgQEAKIAlpZiAobXNnX3R5cGUgPT0gRlNDS19JR05PUkUpCiAJCXJldHVybiAwOwogCi0JaWYgKG9iamVjdF9vbl9za2lwbGlzdChvcHRpb25zLCBvYmplY3QpKQorCWlmIChvYmplY3Rfb25fc2tpcGxpc3Qob3B0aW9ucywgb2lkKSkKIAkJcmV0dXJuIDA7CiAKIAlpZiAobXNnX3R5cGUgPT0gRlNDS19GQVRBTCkKQEAgLTMwOSw0OSArMzA3LDcxIEBACiAKIAl2YV9zdGFydChhcCwgZm10KTsKIAlzdHJidWZfdmFkZGYoJnNiLCBmbXQsIGFwKTsKLQlyZXN1bHQgPSBvcHRpb25zLT5lcnJvcl9mdW5jKG9wdGlvbnMsIG9iamVjdCwgbXNnX3R5cGUsIHNiLmJ1Zik7CisJcmVzdWx0ID0gb3B0aW9ucy0+ZXJyb3JfZnVuYyhvcHRpb25zLCBvaWQsIG9iamVjdF90eXBlLAorCQkJCSAgICAgbXNnX3R5cGUsIHNiLmJ1Zik7CiAJc3RyYnVmX3JlbGVhc2UoJnNiKTsKIAl2YV9lbmQoYXApOwogCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdGljIGNoYXIgKmdldF9vYmplY3RfbmFtZShzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zLCBzdHJ1Y3Qgb2JqZWN0ICpvYmopCit2b2lkIGZzY2tfZW5hYmxlX29iamVjdF9uYW1lcyhzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zKQogewogCWlmICghb3B0aW9ucy0+b2JqZWN0X25hbWVzKQotCQlyZXR1cm4gTlVMTDsKLQlyZXR1cm4gbG9va3VwX2RlY29yYXRpb24ob3B0aW9ucy0+b2JqZWN0X25hbWVzLCBvYmopOworCQlvcHRpb25zLT5vYmplY3RfbmFtZXMgPSBraF9pbml0X29pZF9tYXAoKTsKIH0KIAotc3RhdGljIHZvaWQgcHV0X29iamVjdF9uYW1lKHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMsIHN0cnVjdCBvYmplY3QgKm9iaiwKLQljb25zdCBjaGFyICpmbXQsIC4uLikKK2NvbnN0IGNoYXIgKmZzY2tfZ2V0X29iamVjdF9uYW1lKHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMsCisJCQkJIGNvbnN0IHN0cnVjdCBvYmplY3RfaWQgKm9pZCkKK3sKKwlraGl0ZXJfdCBwb3M7CisJaWYgKCFvcHRpb25zLT5vYmplY3RfbmFtZXMpCisJCXJldHVybiBOVUxMOworCXBvcyA9IGtoX2dldF9vaWRfbWFwKG9wdGlvbnMtPm9iamVjdF9uYW1lcywgKm9pZCk7CisJaWYgKHBvcyA+PSBraF9lbmQob3B0aW9ucy0+b2JqZWN0X25hbWVzKSkKKwkJcmV0dXJuIE5VTEw7CisJcmV0dXJuIGtoX3ZhbHVlKG9wdGlvbnMtPm9iamVjdF9uYW1lcywgcG9zKTsKK30KKwordm9pZCBmc2NrX3B1dF9vYmplY3RfbmFtZShzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zLAorCQkJICBjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQsCisJCQkgIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQogewogCXZhX2xpc3QgYXA7CiAJc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKLQljaGFyICpleGlzdGluZzsKKwlraGl0ZXJfdCBwb3M7CisJaW50IGhhc2hyZXQ7CiAKIAlpZiAoIW9wdGlvbnMtPm9iamVjdF9uYW1lcykKIAkJcmV0dXJuOwotCWV4aXN0aW5nID0gbG9va3VwX2RlY29yYXRpb24ob3B0aW9ucy0+b2JqZWN0X25hbWVzLCBvYmopOwotCWlmIChleGlzdGluZykKKworCXBvcyA9IGtoX3B1dF9vaWRfbWFwKG9wdGlvbnMtPm9iamVjdF9uYW1lcywgKm9pZCwgJmhhc2hyZXQpOworCWlmICghaGFzaHJldCkKIAkJcmV0dXJuOwogCXZhX3N0YXJ0KGFwLCBmbXQpOwogCXN0cmJ1Zl92YWRkZigmYnVmLCBmbXQsIGFwKTsKLQlhZGRfZGVjb3JhdGlvbihvcHRpb25zLT5vYmplY3RfbmFtZXMsIG9iaiwgc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKSk7CisJa2hfdmFsdWUob3B0aW9ucy0+b2JqZWN0X25hbWVzLCBwb3MpID0gc3RyYnVmX2RldGFjaCgmYnVmLCBOVUxMKTsKIAl2YV9lbmQoYXApOwogfQogCi1zdGF0aWMgY29uc3QgY2hhciAqZGVzY3JpYmVfb2JqZWN0KHN0cnVjdCBmc2NrX29wdGlvbnMgKm8sIHN0cnVjdCBvYmplY3QgKm9iaikKK2NvbnN0IGNoYXIgKmZzY2tfZGVzY3JpYmVfb2JqZWN0KHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMsCisJCQkJIGNvbnN0IHN0cnVjdCBvYmplY3RfaWQgKm9pZCkKIHsKLQlzdGF0aWMgc3RydWN0IHN0cmJ1ZiBidWYgPSBTVFJCVUZfSU5JVDsKLQljaGFyICpuYW1lOworCXN0YXRpYyBzdHJ1Y3Qgc3RyYnVmIGJ1ZnNbXSA9IHsKKwkJU1RSQlVGX0lOSVQsIFNUUkJVRl9JTklULCBTVFJCVUZfSU5JVCwgU1RSQlVGX0lOSVQKKwl9OworCXN0YXRpYyBpbnQgYiA9IDA7CisJc3RydWN0IHN0cmJ1ZiAqYnVmOworCWNvbnN0IGNoYXIgKm5hbWUgPSBmc2NrX2dldF9vYmplY3RfbmFtZShvcHRpb25zLCBvaWQpOwogCi0Jc3RyYnVmX3Jlc2V0KCZidWYpOwotCXN0cmJ1Zl9hZGRzdHIoJmJ1Ziwgb2lkX3RvX2hleCgmb2JqLT5vaWQpKTsKLQlpZiAoby0+b2JqZWN0X25hbWVzICYmIChuYW1lID0gbG9va3VwX2RlY29yYXRpb24oby0+b2JqZWN0X25hbWVzLCBvYmopKSkKLQkJc3RyYnVmX2FkZGYoJmJ1ZiwgIiAoJXMpIiwgbmFtZSk7CisJYnVmID0gYnVmcyArIGI7CisJYiA9IChiICsgMSkgJSBBUlJBWV9TSVpFKGJ1ZnMpOworCXN0cmJ1Zl9yZXNldChidWYpOworCXN0cmJ1Zl9hZGRzdHIoYnVmLCBvaWRfdG9faGV4KG9pZCkpOworCWlmIChuYW1lKQorCQlzdHJidWZfYWRkZihidWYsICIgKCVzKSIsIG5hbWUpOwogCi0JcmV0dXJuIGJ1Zi5idWY7CisJcmV0dXJuIGJ1Zi0+YnVmOwogfQogCiBzdGF0aWMgaW50IGZzY2tfd2Fsa190cmVlKHN0cnVjdCB0cmVlICp0cmVlLCB2b2lkICpkYXRhLCBzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zKQpAQCAtMzY0LDcgKzM4NCw3IEBACiAJaWYgKHBhcnNlX3RyZWUodHJlZSkpCiAJCXJldHVybiAtMTsKIAotCW5hbWUgPSBnZXRfb2JqZWN0X25hbWUob3B0aW9ucywgJnRyZWUtPm9iamVjdCk7CisJbmFtZSA9IGZzY2tfZ2V0X29iamVjdF9uYW1lKG9wdGlvbnMsICZ0cmVlLT5vYmplY3Qub2lkKTsKIAlpZiAoaW5pdF90cmVlX2Rlc2NfZ2VudGx5KCZkZXNjLCB0cmVlLT5idWZmZXIsIHRyZWUtPnNpemUpKQogCQlyZXR1cm4gLTE7CiAJd2hpbGUgKHRyZWVfZW50cnlfZ2VudGx5KCZkZXNjLCAmZW50cnkpKSB7CkBAIC0zNzcsMjAgKzM5NywyMSBAQAogCQlpZiAoU19JU0RJUihlbnRyeS5tb2RlKSkgewogCQkJb2JqID0gKHN0cnVjdCBvYmplY3QgKilsb29rdXBfdHJlZSh0aGVfcmVwb3NpdG9yeSwgJmVudHJ5Lm9pZCk7CiAJCQlpZiAobmFtZSAmJiBvYmopCi0JCQkJcHV0X29iamVjdF9uYW1lKG9wdGlvbnMsIG9iaiwgIiVzJXMvIiwgbmFtZSwKLQkJCQkJZW50cnkucGF0aCk7CisJCQkJZnNja19wdXRfb2JqZWN0X25hbWUob3B0aW9ucywgJmVudHJ5Lm9pZCwgIiVzJXMvIiwKKwkJCQkJCSAgICAgbmFtZSwgZW50cnkucGF0aCk7CiAJCQlyZXN1bHQgPSBvcHRpb25zLT53YWxrKG9iaiwgT0JKX1RSRUUsIGRhdGEsIG9wdGlvbnMpOwogCQl9CiAJCWVsc2UgaWYgKFNfSVNSRUcoZW50cnkubW9kZSkgfHwgU19JU0xOSyhlbnRyeS5tb2RlKSkgewogCQkJb2JqID0gKHN0cnVjdCBvYmplY3QgKilsb29rdXBfYmxvYih0aGVfcmVwb3NpdG9yeSwgJmVudHJ5Lm9pZCk7CiAJCQlpZiAobmFtZSAmJiBvYmopCi0JCQkJcHV0X29iamVjdF9uYW1lKG9wdGlvbnMsIG9iaiwgIiVzJXMiLCBuYW1lLAotCQkJCQllbnRyeS5wYXRoKTsKKwkJCQlmc2NrX3B1dF9vYmplY3RfbmFtZShvcHRpb25zLCAmZW50cnkub2lkLCAiJXMlcyIsCisJCQkJCQkgICAgIG5hbWUsIGVudHJ5LnBhdGgpOwogCQkJcmVzdWx0ID0gb3B0aW9ucy0+d2FsayhvYmosIE9CSl9CTE9CLCBkYXRhLCBvcHRpb25zKTsKIAkJfQogCQllbHNlIHsKIAkJCXJlc3VsdCA9IGVycm9yKCJpbiB0cmVlICVzOiBlbnRyeSAlcyBoYXMgYmFkIG1vZGUgJS42byIsCi0JCQkJCWRlc2NyaWJlX29iamVjdChvcHRpb25zLCAmdHJlZS0+b2JqZWN0KSwgZW50cnkucGF0aCwgZW50cnkubW9kZSk7CisJCQkJICAgICAgIGZzY2tfZGVzY3JpYmVfb2JqZWN0KG9wdGlvbnMsICZ0cmVlLT5vYmplY3Qub2lkKSwKKwkJCQkgICAgICAgZW50cnkucGF0aCwgZW50cnkubW9kZSk7CiAJCX0KIAkJaWYgKHJlc3VsdCA8IDApCiAJCQlyZXR1cm4gcmVzdWx0OwpAQCAtNDExLDEwICs0MzIsMTAgQEAKIAlpZiAocGFyc2VfY29tbWl0KGNvbW1pdCkpCiAJCXJldHVybiAtMTsKIAotCW5hbWUgPSBnZXRfb2JqZWN0X25hbWUob3B0aW9ucywgJmNvbW1pdC0+b2JqZWN0KTsKKwluYW1lID0gZnNja19nZXRfb2JqZWN0X25hbWUob3B0aW9ucywgJmNvbW1pdC0+b2JqZWN0Lm9pZCk7CiAJaWYgKG5hbWUpCi0JCXB1dF9vYmplY3RfbmFtZShvcHRpb25zLCAmZ2V0X2NvbW1pdF90cmVlKGNvbW1pdCktPm9iamVjdCwKLQkJCQkiJXM6IiwgbmFtZSk7CisJCWZzY2tfcHV0X29iamVjdF9uYW1lKG9wdGlvbnMsIGdldF9jb21taXRfdHJlZV9vaWQoY29tbWl0KSwKKwkJCQkgICAgICIlczoiLCBuYW1lKTsKIAogCXJlc3VsdCA9IG9wdGlvbnMtPndhbGsoKHN0cnVjdCBvYmplY3QgKilnZXRfY29tbWl0X3RyZWUoY29tbWl0KSwKIAkJCSAgICAgICBPQkpfVFJFRSwgZGF0YSwgb3B0aW9ucyk7CkBAIC00NDIsMTYgKzQ2MywxNyBAQAogCiAJd2hpbGUgKHBhcmVudHMpIHsKIAkJaWYgKG5hbWUpIHsKLQkJCXN0cnVjdCBvYmplY3QgKm9iaiA9ICZwYXJlbnRzLT5pdGVtLT5vYmplY3Q7CisJCQlzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQgPSAmcGFyZW50cy0+aXRlbS0+b2JqZWN0Lm9pZDsKIAogCQkJaWYgKGNvdW50ZXIrKykKLQkJCQlwdXRfb2JqZWN0X25hbWUob3B0aW9ucywgb2JqLCAiJXNeJWQiLAotCQkJCQluYW1lLCBjb3VudGVyKTsKKwkJCQlmc2NrX3B1dF9vYmplY3RfbmFtZShvcHRpb25zLCBvaWQsICIlc14lZCIsCisJCQkJCQkgICAgIG5hbWUsIGNvdW50ZXIpOwogCQkJZWxzZSBpZiAoZ2VuZXJhdGlvbiA+IDApCi0JCQkJcHV0X29iamVjdF9uYW1lKG9wdGlvbnMsIG9iaiwgIiUuKnN+JWQiLAotCQkJCQluYW1lX3ByZWZpeF9sZW4sIG5hbWUsIGdlbmVyYXRpb24gKyAxKTsKKwkJCQlmc2NrX3B1dF9vYmplY3RfbmFtZShvcHRpb25zLCBvaWQsICIlLipzfiVkIiwKKwkJCQkJCSAgICAgbmFtZV9wcmVmaXhfbGVuLCBuYW1lLAorCQkJCQkJICAgICBnZW5lcmF0aW9uICsgMSk7CiAJCQllbHNlCi0JCQkJcHV0X29iamVjdF9uYW1lKG9wdGlvbnMsIG9iaiwgIiVzXiIsIG5hbWUpOworCQkJCWZzY2tfcHV0X29iamVjdF9uYW1lKG9wdGlvbnMsIG9pZCwgIiVzXiIsIG5hbWUpOwogCQl9CiAJCXJlc3VsdCA9IG9wdGlvbnMtPndhbGsoKHN0cnVjdCBvYmplY3QgKilwYXJlbnRzLT5pdGVtLCBPQkpfQ09NTUlULCBkYXRhLCBvcHRpb25zKTsKIAkJaWYgKHJlc3VsdCA8IDApCkBAIC00NjUsMTIgKzQ4NywxMiBAQAogCiBzdGF0aWMgaW50IGZzY2tfd2Fsa190YWcoc3RydWN0IHRhZyAqdGFnLCB2b2lkICpkYXRhLCBzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zKQogewotCWNoYXIgKm5hbWUgPSBnZXRfb2JqZWN0X25hbWUob3B0aW9ucywgJnRhZy0+b2JqZWN0KTsKKwljb25zdCBjaGFyICpuYW1lID0gZnNja19nZXRfb2JqZWN0X25hbWUob3B0aW9ucywgJnRhZy0+b2JqZWN0Lm9pZCk7CiAKIAlpZiAocGFyc2VfdGFnKHRhZykpCiAJCXJldHVybiAtMTsKIAlpZiAobmFtZSkKLQkJcHV0X29iamVjdF9uYW1lKG9wdGlvbnMsIHRhZy0+dGFnZ2VkLCAiJXMiLCBuYW1lKTsKKwkJZnNja19wdXRfb2JqZWN0X25hbWUob3B0aW9ucywgJnRhZy0+dGFnZ2VkLT5vaWQsICIlcyIsIG5hbWUpOwogCXJldHVybiBvcHRpb25zLT53YWxrKHRhZy0+dGFnZ2VkLCBPQkpfQU5ZLCBkYXRhLCBvcHRpb25zKTsKIH0KIApAQCAtNDkyLDcgKzUxNCw4IEBACiAJY2FzZSBPQkpfVEFHOgogCQlyZXR1cm4gZnNja193YWxrX3RhZygoc3RydWN0IHRhZyAqKW9iaiwgZGF0YSwgb3B0aW9ucyk7CiAJZGVmYXVsdDoKLQkJZXJyb3IoIlVua25vd24gb2JqZWN0IHR5cGUgZm9yICVzIiwgZGVzY3JpYmVfb2JqZWN0KG9wdGlvbnMsIG9iaikpOworCQllcnJvcigiVW5rbm93biBvYmplY3QgdHlwZSBmb3IgJXMiLAorCQkgICAgICBmc2NrX2Rlc2NyaWJlX29iamVjdChvcHRpb25zLCAmb2JqLT5vaWQpKTsKIAkJcmV0dXJuIC0xOwogCX0KIH0KQEAgLTU0Myw3ICs1NjYsOSBAQAogCXJldHVybiBjMSA8IGMyID8gMCA6IFRSRUVfVU5PUkRFUkVEOwogfQogCi1zdGF0aWMgaW50IGZzY2tfdHJlZShzdHJ1Y3QgdHJlZSAqaXRlbSwgc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9ucykKK3N0YXRpYyBpbnQgZnNja190cmVlKGNvbnN0IHN0cnVjdCBvYmplY3RfaWQgKm9pZCwKKwkJICAgICBjb25zdCBjaGFyICpidWZmZXIsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKKwkJICAgICBzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zKQogewogCWludCByZXR2YWwgPSAwOwogCWludCBoYXNfbnVsbF9zaGExID0gMDsKQEAgLTU2MCw4ICs1ODUsOCBAQAogCXVuc2lnbmVkIG9fbW9kZTsKIAljb25zdCBjaGFyICpvX25hbWU7CiAKLQlpZiAoaW5pdF90cmVlX2Rlc2NfZ2VudGx5KCZkZXNjLCBpdGVtLT5idWZmZXIsIGl0ZW0tPnNpemUpKSB7Ci0JCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgJml0ZW0tPm9iamVjdCwgRlNDS19NU0dfQkFEX1RSRUUsICJjYW5ub3QgYmUgcGFyc2VkIGFzIGEgdHJlZSIpOworCWlmIChpbml0X3RyZWVfZGVzY19nZW50bHkoJmRlc2MsIGJ1ZmZlciwgc2l6ZSkpIHsKKwkJcmV0dmFsICs9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9UUkVFLCBGU0NLX01TR19CQURfVFJFRSwgImNhbm5vdCBiZSBwYXJzZWQgYXMgYSB0cmVlIik7CiAJCXJldHVybiByZXR2YWw7CiAJfQogCkBAIC01ODcsMTMgKzYxMiwxNCBAQAogCQkJaWYgKCFTX0lTTE5LKG1vZGUpKQogCQkJCW9pZHNldF9pbnNlcnQoJmdpdG1vZHVsZXNfZm91bmQsIG9pZCk7CiAJCQllbHNlCi0JCQkJcmV0dmFsICs9IHJlcG9ydChvcHRpb25zLCAmaXRlbS0+b2JqZWN0LAorCQkJCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywKKwkJCQkJCSBvaWQsIE9CSl9UUkVFLAogCQkJCQkJIEZTQ0tfTVNHX0dJVE1PRFVMRVNfU1lNTElOSywKIAkJCQkJCSAiLmdpdG1vZHVsZXMgaXMgYSBzeW1ib2xpYyBsaW5rIik7CiAJCX0KIAogCQlpZiAodXBkYXRlX3RyZWVfZW50cnlfZ2VudGx5KCZkZXNjKSkgewotCQkJcmV0dmFsICs9IHJlcG9ydChvcHRpb25zLCAmaXRlbS0+b2JqZWN0LCBGU0NLX01TR19CQURfVFJFRSwgImNhbm5vdCBiZSBwYXJzZWQgYXMgYSB0cmVlIik7CisJCQlyZXR2YWwgKz0gcmVwb3J0KG9wdGlvbnMsIG9pZCwgT0JKX1RSRUUsIEZTQ0tfTVNHX0JBRF9UUkVFLCAiY2Fubm90IGJlIHBhcnNlZCBhcyBhIHRyZWUiKTsKIAkJCWJyZWFrOwogCQl9CiAKQEAgLTYzOCwzMCArNjY0LDMxIEBACiAJfQogCiAJaWYgKGhhc19udWxsX3NoYTEpCi0JCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgJml0ZW0tPm9iamVjdCwgRlNDS19NU0dfTlVMTF9TSEExLCAiY29udGFpbnMgZW50cmllcyBwb2ludGluZyB0byBudWxsIHNoYTEiKTsKKwkJcmV0dmFsICs9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9UUkVFLCBGU0NLX01TR19OVUxMX1NIQTEsICJjb250YWlucyBlbnRyaWVzIHBvaW50aW5nIHRvIG51bGwgc2hhMSIpOwogCWlmIChoYXNfZnVsbF9wYXRoKQotCQlyZXR2YWwgKz0gcmVwb3J0KG9wdGlvbnMsICZpdGVtLT5vYmplY3QsIEZTQ0tfTVNHX0ZVTExfUEFUSE5BTUUsICJjb250YWlucyBmdWxsIHBhdGhuYW1lcyIpOworCQlyZXR2YWwgKz0gcmVwb3J0KG9wdGlvbnMsIG9pZCwgT0JKX1RSRUUsIEZTQ0tfTVNHX0ZVTExfUEFUSE5BTUUsICJjb250YWlucyBmdWxsIHBhdGhuYW1lcyIpOwogCWlmIChoYXNfZW1wdHlfbmFtZSkKLQkJcmV0dmFsICs9IHJlcG9ydChvcHRpb25zLCAmaXRlbS0+b2JqZWN0LCBGU0NLX01TR19FTVBUWV9OQU1FLCAiY29udGFpbnMgZW1wdHkgcGF0aG5hbWUiKTsKKwkJcmV0dmFsICs9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9UUkVFLCBGU0NLX01TR19FTVBUWV9OQU1FLCAiY29udGFpbnMgZW1wdHkgcGF0aG5hbWUiKTsKIAlpZiAoaGFzX2RvdCkKLQkJcmV0dmFsICs9IHJlcG9ydChvcHRpb25zLCAmaXRlbS0+b2JqZWN0LCBGU0NLX01TR19IQVNfRE9ULCAiY29udGFpbnMgJy4nIik7CisJCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfVFJFRSwgRlNDS19NU0dfSEFTX0RPVCwgImNvbnRhaW5zICcuJyIpOwogCWlmIChoYXNfZG90ZG90KQotCQlyZXR2YWwgKz0gcmVwb3J0KG9wdGlvbnMsICZpdGVtLT5vYmplY3QsIEZTQ0tfTVNHX0hBU19ET1RET1QsICJjb250YWlucyAnLi4nIik7CisJCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfVFJFRSwgRlNDS19NU0dfSEFTX0RPVERPVCwgImNvbnRhaW5zICcuLiciKTsKIAlpZiAoaGFzX2RvdGdpdCkKLQkJcmV0dmFsICs9IHJlcG9ydChvcHRpb25zLCAmaXRlbS0+b2JqZWN0LCBGU0NLX01TR19IQVNfRE9UR0lULCAiY29udGFpbnMgJy5naXQnIik7CisJCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfVFJFRSwgRlNDS19NU0dfSEFTX0RPVEdJVCwgImNvbnRhaW5zICcuZ2l0JyIpOwogCWlmIChoYXNfemVyb19wYWQpCi0JCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgJml0ZW0tPm9iamVjdCwgRlNDS19NU0dfWkVST19QQURERURfRklMRU1PREUsICJjb250YWlucyB6ZXJvLXBhZGRlZCBmaWxlIG1vZGVzIik7CisJCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfVFJFRSwgRlNDS19NU0dfWkVST19QQURERURfRklMRU1PREUsICJjb250YWlucyB6ZXJvLXBhZGRlZCBmaWxlIG1vZGVzIik7CiAJaWYgKGhhc19iYWRfbW9kZXMpCi0JCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgJml0ZW0tPm9iamVjdCwgRlNDS19NU0dfQkFEX0ZJTEVNT0RFLCAiY29udGFpbnMgYmFkIGZpbGUgbW9kZXMiKTsKKwkJcmV0dmFsICs9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9UUkVFLCBGU0NLX01TR19CQURfRklMRU1PREUsICJjb250YWlucyBiYWQgZmlsZSBtb2RlcyIpOwogCWlmIChoYXNfZHVwX2VudHJpZXMpCi0JCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgJml0ZW0tPm9iamVjdCwgRlNDS19NU0dfRFVQTElDQVRFX0VOVFJJRVMsICJjb250YWlucyBkdXBsaWNhdGUgZmlsZSBlbnRyaWVzIik7CisJCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfVFJFRSwgRlNDS19NU0dfRFVQTElDQVRFX0VOVFJJRVMsICJjb250YWlucyBkdXBsaWNhdGUgZmlsZSBlbnRyaWVzIik7CiAJaWYgKG5vdF9wcm9wZXJseV9zb3J0ZWQpCi0JCXJldHZhbCArPSByZXBvcnQob3B0aW9ucywgJml0ZW0tPm9iamVjdCwgRlNDS19NU0dfVFJFRV9OT1RfU09SVEVELCAibm90IHByb3Blcmx5IHNvcnRlZCIpOworCQlyZXR2YWwgKz0gcmVwb3J0KG9wdGlvbnMsIG9pZCwgT0JKX1RSRUUsIEZTQ0tfTVNHX1RSRUVfTk9UX1NPUlRFRCwgIm5vdCBwcm9wZXJseSBzb3J0ZWQiKTsKIAlyZXR1cm4gcmV0dmFsOwogfQogCiBzdGF0aWMgaW50IHZlcmlmeV9oZWFkZXJzKGNvbnN0IHZvaWQgKmRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKLQkJCSAgc3RydWN0IG9iamVjdCAqb2JqLCBzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zKQorCQkJICBjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQsIGVudW0gb2JqZWN0X3R5cGUgdHlwZSwKKwkJCSAgc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9ucykKIHsKIAljb25zdCBjaGFyICpidWZmZXIgPSAoY29uc3QgY2hhciAqKWRhdGE7CiAJdW5zaWduZWQgbG9uZyBpOwpAQCAtNjY5LDcgKzY5Niw3IEBACiAJZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgewogCQlzd2l0Y2ggKGJ1ZmZlcltpXSkgewogCQljYXNlICdcMCc6Ci0JCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9iaiwKKwkJCXJldHVybiByZXBvcnQob3B0aW9ucywgb2lkLCB0eXBlLAogCQkJCUZTQ0tfTVNHX05VTF9JTl9IRUFERVIsCiAJCQkJInVudGVybWluYXRlZCBoZWFkZXI6IE5VTCBhdCBvZmZzZXQgJWxkIiwgaSk7CiAJCWNhc2UgJ1xuJzoKQEAgLTY4NywxMSArNzE0LDEzIEBACiAJaWYgKHNpemUgJiYgYnVmZmVyW3NpemUgLSAxXSA9PSAnXG4nKQogCQlyZXR1cm4gMDsKIAotCXJldHVybiByZXBvcnQob3B0aW9ucywgb2JqLAorCXJldHVybiByZXBvcnQob3B0aW9ucywgb2lkLCB0eXBlLAogCQlGU0NLX01TR19VTlRFUk1JTkFURURfSEVBREVSLCAidW50ZXJtaW5hdGVkIGhlYWRlciIpOwogfQogCi1zdGF0aWMgaW50IGZzY2tfaWRlbnQoY29uc3QgY2hhciAqKmlkZW50LCBzdHJ1Y3Qgb2JqZWN0ICpvYmosIHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMpCitzdGF0aWMgaW50IGZzY2tfaWRlbnQoY29uc3QgY2hhciAqKmlkZW50LAorCQkgICAgICBjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQsIGVudW0gb2JqZWN0X3R5cGUgdHlwZSwKKwkJICAgICAgc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9ucykKIHsKIAljb25zdCBjaGFyICpwID0gKmlkZW50OwogCWNoYXIgKmVuZDsKQEAgLTcwMSwyOCArNzMwLDI4IEBACiAJCSgqaWRlbnQpKys7CiAKIAlpZiAoKnAgPT0gJzwnKQotCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9iaiwgRlNDS19NU0dfTUlTU0lOR19OQU1FX0JFRk9SRV9FTUFJTCwgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gbWlzc2luZyBzcGFjZSBiZWZvcmUgZW1haWwiKTsKKwkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCBvaWQsIHR5cGUsIEZTQ0tfTVNHX01JU1NJTkdfTkFNRV9CRUZPUkVfRU1BSUwsICJpbnZhbGlkIGF1dGhvci9jb21taXR0ZXIgbGluZSAtIG1pc3Npbmcgc3BhY2UgYmVmb3JlIGVtYWlsIik7CiAJcCArPSBzdHJjc3BuKHAsICI8PlxuIik7CiAJaWYgKCpwID09ICc+JykKLQkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCBvYmosIEZTQ0tfTVNHX0JBRF9OQU1FLCAiaW52YWxpZCBhdXRob3IvY29tbWl0dGVyIGxpbmUgLSBiYWQgbmFtZSIpOworCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9pZCwgdHlwZSwgRlNDS19NU0dfQkFEX05BTUUsICJpbnZhbGlkIGF1dGhvci9jb21taXR0ZXIgbGluZSAtIGJhZCBuYW1lIik7CiAJaWYgKCpwICE9ICc8JykKLQkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCBvYmosIEZTQ0tfTVNHX01JU1NJTkdfRU1BSUwsICJpbnZhbGlkIGF1dGhvci9jb21taXR0ZXIgbGluZSAtIG1pc3NpbmcgZW1haWwiKTsKKwkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCBvaWQsIHR5cGUsIEZTQ0tfTVNHX01JU1NJTkdfRU1BSUwsICJpbnZhbGlkIGF1dGhvci9jb21taXR0ZXIgbGluZSAtIG1pc3NpbmcgZW1haWwiKTsKIAlpZiAocFstMV0gIT0gJyAnKQotCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9iaiwgRlNDS19NU0dfTUlTU0lOR19TUEFDRV9CRUZPUkVfRU1BSUwsICJpbnZhbGlkIGF1dGhvci9jb21taXR0ZXIgbGluZSAtIG1pc3Npbmcgc3BhY2UgYmVmb3JlIGVtYWlsIik7CisJCXJldHVybiByZXBvcnQob3B0aW9ucywgb2lkLCB0eXBlLCBGU0NLX01TR19NSVNTSU5HX1NQQUNFX0JFRk9SRV9FTUFJTCwgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gbWlzc2luZyBzcGFjZSBiZWZvcmUgZW1haWwiKTsKIAlwKys7CiAJcCArPSBzdHJjc3BuKHAsICI8PlxuIik7CiAJaWYgKCpwICE9ICc+JykKLQkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCBvYmosIEZTQ0tfTVNHX0JBRF9FTUFJTCwgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gYmFkIGVtYWlsIik7CisJCXJldHVybiByZXBvcnQob3B0aW9ucywgb2lkLCB0eXBlLCBGU0NLX01TR19CQURfRU1BSUwsICJpbnZhbGlkIGF1dGhvci9jb21taXR0ZXIgbGluZSAtIGJhZCBlbWFpbCIpOwogCXArKzsKIAlpZiAoKnAgIT0gJyAnKQotCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9iaiwgRlNDS19NU0dfTUlTU0lOR19TUEFDRV9CRUZPUkVfREFURSwgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gbWlzc2luZyBzcGFjZSBiZWZvcmUgZGF0ZSIpOworCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9pZCwgdHlwZSwgRlNDS19NU0dfTUlTU0lOR19TUEFDRV9CRUZPUkVfREFURSwgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gbWlzc2luZyBzcGFjZSBiZWZvcmUgZGF0ZSIpOwogCXArKzsKIAlpZiAoKnAgPT0gJzAnICYmIHBbMV0gIT0gJyAnKQotCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9iaiwgRlNDS19NU0dfWkVST19QQURERURfREFURSwgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gemVyby1wYWRkZWQgZGF0ZSIpOworCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9pZCwgdHlwZSwgRlNDS19NU0dfWkVST19QQURERURfREFURSwgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gemVyby1wYWRkZWQgZGF0ZSIpOwogCWlmIChkYXRlX292ZXJmbG93cyhwYXJzZV90aW1lc3RhbXAocCwgJmVuZCwgMTApKSkKLQkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCBvYmosIEZTQ0tfTVNHX0JBRF9EQVRFX09WRVJGTE9XLCAiaW52YWxpZCBhdXRob3IvY29tbWl0dGVyIGxpbmUgLSBkYXRlIGNhdXNlcyBpbnRlZ2VyIG92ZXJmbG93Iik7CisJCXJldHVybiByZXBvcnQob3B0aW9ucywgb2lkLCB0eXBlLCBGU0NLX01TR19CQURfREFURV9PVkVSRkxPVywgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gZGF0ZSBjYXVzZXMgaW50ZWdlciBvdmVyZmxvdyIpOwogCWlmICgoZW5kID09IHAgfHwgKmVuZCAhPSAnICcpKQotCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9iaiwgRlNDS19NU0dfQkFEX0RBVEUsICJpbnZhbGlkIGF1dGhvci9jb21taXR0ZXIgbGluZSAtIGJhZCBkYXRlIik7CisJCXJldHVybiByZXBvcnQob3B0aW9ucywgb2lkLCB0eXBlLCBGU0NLX01TR19CQURfREFURSwgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gYmFkIGRhdGUiKTsKIAlwID0gZW5kICsgMTsKIAlpZiAoKCpwICE9ICcrJyAmJiAqcCAhPSAnLScpIHx8CiAJICAgICFpc2RpZ2l0KHBbMV0pIHx8CkBAIC03MzAsODMgKzc1OSw2MCBAQAogCSAgICAhaXNkaWdpdChwWzNdKSB8fAogCSAgICAhaXNkaWdpdChwWzRdKSB8fAogCSAgICAocFs1XSAhPSAnXG4nKSkKLQkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCBvYmosIEZTQ0tfTVNHX0JBRF9USU1FWk9ORSwgImludmFsaWQgYXV0aG9yL2NvbW1pdHRlciBsaW5lIC0gYmFkIHRpbWUgem9uZSIpOworCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9pZCwgdHlwZSwgRlNDS19NU0dfQkFEX1RJTUVaT05FLCAiaW52YWxpZCBhdXRob3IvY29tbWl0dGVyIGxpbmUgLSBiYWQgdGltZSB6b25lIik7CiAJcCArPSA2OwogCXJldHVybiAwOwogfQogCi1zdGF0aWMgaW50IGZzY2tfY29tbWl0X2J1ZmZlcihzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGNvbnN0IGNoYXIgKmJ1ZmZlciwKLQl1bnNpZ25lZCBsb25nIHNpemUsIHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMpCitzdGF0aWMgaW50IGZzY2tfY29tbWl0KGNvbnN0IHN0cnVjdCBvYmplY3RfaWQgKm9pZCwKKwkJICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlciwgdW5zaWduZWQgbG9uZyBzaXplLAorCQkgICAgICAgc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9ucykKIHsKLQlzdHJ1Y3Qgb2JqZWN0X2lkIHRyZWVfb2lkLCBvaWQ7Ci0Jc3RydWN0IGNvbW1pdF9ncmFmdCAqZ3JhZnQ7Ci0JdW5zaWduZWQgcGFyZW50X2NvdW50LCBwYXJlbnRfbGluZV9jb3VudCA9IDAsIGF1dGhvcl9jb3VudDsKKwlzdHJ1Y3Qgb2JqZWN0X2lkIHRyZWVfb2lkLCBwYXJlbnRfb2lkOworCXVuc2lnbmVkIGF1dGhvcl9jb3VudDsKIAlpbnQgZXJyOwogCWNvbnN0IGNoYXIgKmJ1ZmZlcl9iZWdpbiA9IGJ1ZmZlcjsKIAljb25zdCBjaGFyICpwOwogCi0JaWYgKHZlcmlmeV9oZWFkZXJzKGJ1ZmZlciwgc2l6ZSwgJmNvbW1pdC0+b2JqZWN0LCBvcHRpb25zKSkKKwlpZiAodmVyaWZ5X2hlYWRlcnMoYnVmZmVyLCBzaXplLCBvaWQsIE9CSl9DT01NSVQsIG9wdGlvbnMpKQogCQlyZXR1cm4gLTE7CiAKIAlpZiAoIXNraXBfcHJlZml4KGJ1ZmZlciwgInRyZWUgIiwgJmJ1ZmZlcikpCi0JCXJldHVybiByZXBvcnQob3B0aW9ucywgJmNvbW1pdC0+b2JqZWN0LCBGU0NLX01TR19NSVNTSU5HX1RSRUUsICJpbnZhbGlkIGZvcm1hdCAtIGV4cGVjdGVkICd0cmVlJyBsaW5lIik7CisJCXJldHVybiByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfQ09NTUlULCBGU0NLX01TR19NSVNTSU5HX1RSRUUsICJpbnZhbGlkIGZvcm1hdCAtIGV4cGVjdGVkICd0cmVlJyBsaW5lIik7CiAJaWYgKHBhcnNlX29pZF9oZXgoYnVmZmVyLCAmdHJlZV9vaWQsICZwKSB8fCAqcCAhPSAnXG4nKSB7Ci0JCWVyciA9IHJlcG9ydChvcHRpb25zLCAmY29tbWl0LT5vYmplY3QsIEZTQ0tfTVNHX0JBRF9UUkVFX1NIQTEsICJpbnZhbGlkICd0cmVlJyBsaW5lIGZvcm1hdCAtIGJhZCBzaGExIik7CisJCWVyciA9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9DT01NSVQsIEZTQ0tfTVNHX0JBRF9UUkVFX1NIQTEsICJpbnZhbGlkICd0cmVlJyBsaW5lIGZvcm1hdCAtIGJhZCBzaGExIik7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJyOwogCX0KIAlidWZmZXIgPSBwICsgMTsKIAl3aGlsZSAoc2tpcF9wcmVmaXgoYnVmZmVyLCAicGFyZW50ICIsICZidWZmZXIpKSB7Ci0JCWlmIChwYXJzZV9vaWRfaGV4KGJ1ZmZlciwgJm9pZCwgJnApIHx8ICpwICE9ICdcbicpIHsKLQkJCWVyciA9IHJlcG9ydChvcHRpb25zLCAmY29tbWl0LT5vYmplY3QsIEZTQ0tfTVNHX0JBRF9QQVJFTlRfU0hBMSwgImludmFsaWQgJ3BhcmVudCcgbGluZSBmb3JtYXQgLSBiYWQgc2hhMSIpOworCQlpZiAocGFyc2Vfb2lkX2hleChidWZmZXIsICZwYXJlbnRfb2lkLCAmcCkgfHwgKnAgIT0gJ1xuJykgeworCQkJZXJyID0gcmVwb3J0KG9wdGlvbnMsIG9pZCwgT0JKX0NPTU1JVCwgRlNDS19NU0dfQkFEX1BBUkVOVF9TSEExLCAiaW52YWxpZCAncGFyZW50JyBsaW5lIGZvcm1hdCAtIGJhZCBzaGExIik7CiAJCQlpZiAoZXJyKQogCQkJCXJldHVybiBlcnI7CiAJCX0KIAkJYnVmZmVyID0gcCArIDE7Ci0JCXBhcmVudF9saW5lX2NvdW50Kys7Ci0JfQotCWdyYWZ0ID0gbG9va3VwX2NvbW1pdF9ncmFmdCh0aGVfcmVwb3NpdG9yeSwgJmNvbW1pdC0+b2JqZWN0Lm9pZCk7Ci0JcGFyZW50X2NvdW50ID0gY29tbWl0X2xpc3RfY291bnQoY29tbWl0LT5wYXJlbnRzKTsKLQlpZiAoZ3JhZnQpIHsKLQkJaWYgKGdyYWZ0LT5ucl9wYXJlbnQgPT0gLTEgJiYgIXBhcmVudF9jb3VudCkKLQkJCTsgLyogc2hhbGxvdyBjb21taXQgKi8KLQkJZWxzZSBpZiAoZ3JhZnQtPm5yX3BhcmVudCAhPSBwYXJlbnRfY291bnQpIHsKLQkJCWVyciA9IHJlcG9ydChvcHRpb25zLCAmY29tbWl0LT5vYmplY3QsIEZTQ0tfTVNHX01JU1NJTkdfR1JBRlQsICJncmFmdCBvYmplY3RzIG1pc3NpbmciKTsKLQkJCWlmIChlcnIpCi0JCQkJcmV0dXJuIGVycjsKLQkJfQotCX0gZWxzZSB7Ci0JCWlmIChwYXJlbnRfY291bnQgIT0gcGFyZW50X2xpbmVfY291bnQpIHsKLQkJCWVyciA9IHJlcG9ydChvcHRpb25zLCAmY29tbWl0LT5vYmplY3QsIEZTQ0tfTVNHX01JU1NJTkdfUEFSRU5ULCAicGFyZW50IG9iamVjdHMgbWlzc2luZyIpOwotCQkJaWYgKGVycikKLQkJCQlyZXR1cm4gZXJyOwotCQl9CiAJfQogCWF1dGhvcl9jb3VudCA9IDA7CiAJd2hpbGUgKHNraXBfcHJlZml4KGJ1ZmZlciwgImF1dGhvciAiLCAmYnVmZmVyKSkgewogCQlhdXRob3JfY291bnQrKzsKLQkJZXJyID0gZnNja19pZGVudCgmYnVmZmVyLCAmY29tbWl0LT5vYmplY3QsIG9wdGlvbnMpOworCQllcnIgPSBmc2NrX2lkZW50KCZidWZmZXIsIG9pZCwgT0JKX0NPTU1JVCwgb3B0aW9ucyk7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJyOwogCX0KIAlpZiAoYXV0aG9yX2NvdW50IDwgMSkKLQkJZXJyID0gcmVwb3J0KG9wdGlvbnMsICZjb21taXQtPm9iamVjdCwgRlNDS19NU0dfTUlTU0lOR19BVVRIT1IsICJpbnZhbGlkIGZvcm1hdCAtIGV4cGVjdGVkICdhdXRob3InIGxpbmUiKTsKKwkJZXJyID0gcmVwb3J0KG9wdGlvbnMsIG9pZCwgT0JKX0NPTU1JVCwgRlNDS19NU0dfTUlTU0lOR19BVVRIT1IsICJpbnZhbGlkIGZvcm1hdCAtIGV4cGVjdGVkICdhdXRob3InIGxpbmUiKTsKIAllbHNlIGlmIChhdXRob3JfY291bnQgPiAxKQotCQllcnIgPSByZXBvcnQob3B0aW9ucywgJmNvbW1pdC0+b2JqZWN0LCBGU0NLX01TR19NVUxUSVBMRV9BVVRIT1JTLCAiaW52YWxpZCBmb3JtYXQgLSBtdWx0aXBsZSAnYXV0aG9yJyBsaW5lcyIpOworCQllcnIgPSByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfQ09NTUlULCBGU0NLX01TR19NVUxUSVBMRV9BVVRIT1JTLCAiaW52YWxpZCBmb3JtYXQgLSBtdWx0aXBsZSAnYXV0aG9yJyBsaW5lcyIpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7CiAJaWYgKCFza2lwX3ByZWZpeChidWZmZXIsICJjb21taXR0ZXIgIiwgJmJ1ZmZlcikpCi0JCXJldHVybiByZXBvcnQob3B0aW9ucywgJmNvbW1pdC0+b2JqZWN0LCBGU0NLX01TR19NSVNTSU5HX0NPTU1JVFRFUiwgImludmFsaWQgZm9ybWF0IC0gZXhwZWN0ZWQgJ2NvbW1pdHRlcicgbGluZSIpOwotCWVyciA9IGZzY2tfaWRlbnQoJmJ1ZmZlciwgJmNvbW1pdC0+b2JqZWN0LCBvcHRpb25zKTsKKwkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9DT01NSVQsIEZTQ0tfTVNHX01JU1NJTkdfQ09NTUlUVEVSLCAiaW52YWxpZCBmb3JtYXQgLSBleHBlY3RlZCAnY29tbWl0dGVyJyBsaW5lIik7CisJZXJyID0gZnNja19pZGVudCgmYnVmZmVyLCBvaWQsIE9CSl9DT01NSVQsIG9wdGlvbnMpOwogCWlmIChlcnIpCiAJCXJldHVybiBlcnI7Ci0JaWYgKCFnZXRfY29tbWl0X3RyZWUoY29tbWl0KSkgewotCQllcnIgPSByZXBvcnQob3B0aW9ucywgJmNvbW1pdC0+b2JqZWN0LCBGU0NLX01TR19CQURfVFJFRSwgImNvdWxkIG5vdCBsb2FkIGNvbW1pdCdzIHRyZWUgJXMiLCBvaWRfdG9faGV4KCZ0cmVlX29pZCkpOwotCQlpZiAoZXJyKQotCQkJcmV0dXJuIGVycjsKLQl9CiAJaWYgKG1lbWNocihidWZmZXJfYmVnaW4sICdcMCcsIHNpemUpKSB7Ci0JCWVyciA9IHJlcG9ydChvcHRpb25zLCAmY29tbWl0LT5vYmplY3QsIEZTQ0tfTVNHX05VTF9JTl9DT01NSVQsCisJCWVyciA9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9DT01NSVQsIEZTQ0tfTVNHX05VTF9JTl9DT01NSVQsCiAJCQkgICAgICJOVUwgYnl0ZSBpbiB0aGUgY29tbWl0IG9iamVjdCBib2R5Iik7CiAJCWlmIChlcnIpCiAJCQlyZXR1cm4gZXJyOwpAQCAtODE0LDkxICs4MjAsNjAgQEAKIAlyZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCBmc2NrX2NvbW1pdChzdHJ1Y3QgY29tbWl0ICpjb21taXQsIGNvbnN0IGNoYXIgKmRhdGEsCi0JdW5zaWduZWQgbG9uZyBzaXplLCBzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zKQorc3RhdGljIGludCBmc2NrX3RhZyhjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQsIGNvbnN0IGNoYXIgKmJ1ZmZlciwKKwkJICAgIHVuc2lnbmVkIGxvbmcgc2l6ZSwgc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9ucykKIHsKLQljb25zdCBjaGFyICpidWZmZXIgPSBkYXRhID8gIGRhdGEgOiBnZXRfY29tbWl0X2J1ZmZlcihjb21taXQsICZzaXplKTsKLQlpbnQgcmV0ID0gZnNja19jb21taXRfYnVmZmVyKGNvbW1pdCwgYnVmZmVyLCBzaXplLCBvcHRpb25zKTsKLQlpZiAoIWRhdGEpCi0JCXVudXNlX2NvbW1pdF9idWZmZXIoY29tbWl0LCBidWZmZXIpOwotCXJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBpbnQgZnNja190YWdfYnVmZmVyKHN0cnVjdCB0YWcgKnRhZywgY29uc3QgY2hhciAqZGF0YSwKLQl1bnNpZ25lZCBsb25nIHNpemUsIHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMpCi17Ci0Jc3RydWN0IG9iamVjdF9pZCBvaWQ7CisJc3RydWN0IG9iamVjdF9pZCB0YWdnZWRfb2lkOwogCWludCByZXQgPSAwOwotCWNvbnN0IGNoYXIgKmJ1ZmZlcjsKLQljaGFyICp0b19mcmVlID0gTlVMTCwgKmVvbDsKKwljaGFyICplb2w7CiAJc3RydWN0IHN0cmJ1ZiBzYiA9IFNUUkJVRl9JTklUOwogCWNvbnN0IGNoYXIgKnA7CiAKLQlpZiAoZGF0YSkKLQkJYnVmZmVyID0gZGF0YTsKLQllbHNlIHsKLQkJZW51bSBvYmplY3RfdHlwZSB0eXBlOwotCi0JCWJ1ZmZlciA9IHRvX2ZyZWUgPQotCQkJcmVhZF9vYmplY3RfZmlsZSgmdGFnLT5vYmplY3Qub2lkLCAmdHlwZSwgJnNpemUpOwotCQlpZiAoIWJ1ZmZlcikKLQkJCXJldHVybiByZXBvcnQob3B0aW9ucywgJnRhZy0+b2JqZWN0LAotCQkJCUZTQ0tfTVNHX01JU1NJTkdfVEFHX09CSkVDVCwKLQkJCQkiY2Fubm90IHJlYWQgdGFnIG9iamVjdCIpOwotCi0JCWlmICh0eXBlICE9IE9CSl9UQUcpIHsKLQkJCXJldCA9IHJlcG9ydChvcHRpb25zLCAmdGFnLT5vYmplY3QsCi0JCQkJRlNDS19NU0dfVEFHX09CSkVDVF9OT1RfVEFHLAotCQkJCSJleHBlY3RlZCB0YWcgZ290ICVzIiwKLQkJCSAgICB0eXBlX25hbWUodHlwZSkpOwotCQkJZ290byBkb25lOwotCQl9Ci0JfQotCi0JcmV0ID0gdmVyaWZ5X2hlYWRlcnMoYnVmZmVyLCBzaXplLCAmdGFnLT5vYmplY3QsIG9wdGlvbnMpOworCXJldCA9IHZlcmlmeV9oZWFkZXJzKGJ1ZmZlciwgc2l6ZSwgb2lkLCBPQkpfVEFHLCBvcHRpb25zKTsKIAlpZiAocmV0KQogCQlnb3RvIGRvbmU7CiAKIAlpZiAoIXNraXBfcHJlZml4KGJ1ZmZlciwgIm9iamVjdCAiLCAmYnVmZmVyKSkgewotCQlyZXQgPSByZXBvcnQob3B0aW9ucywgJnRhZy0+b2JqZWN0LCBGU0NLX01TR19NSVNTSU5HX09CSkVDVCwgImludmFsaWQgZm9ybWF0IC0gZXhwZWN0ZWQgJ29iamVjdCcgbGluZSIpOworCQlyZXQgPSByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfVEFHLCBGU0NLX01TR19NSVNTSU5HX09CSkVDVCwgImludmFsaWQgZm9ybWF0IC0gZXhwZWN0ZWQgJ29iamVjdCcgbGluZSIpOwogCQlnb3RvIGRvbmU7CiAJfQotCWlmIChwYXJzZV9vaWRfaGV4KGJ1ZmZlciwgJm9pZCwgJnApIHx8ICpwICE9ICdcbicpIHsKLQkJcmV0ID0gcmVwb3J0KG9wdGlvbnMsICZ0YWctPm9iamVjdCwgRlNDS19NU0dfQkFEX09CSkVDVF9TSEExLCAiaW52YWxpZCAnb2JqZWN0JyBsaW5lIGZvcm1hdCAtIGJhZCBzaGExIik7CisJaWYgKHBhcnNlX29pZF9oZXgoYnVmZmVyLCAmdGFnZ2VkX29pZCwgJnApIHx8ICpwICE9ICdcbicpIHsKKwkJcmV0ID0gcmVwb3J0KG9wdGlvbnMsIG9pZCwgT0JKX1RBRywgRlNDS19NU0dfQkFEX09CSkVDVF9TSEExLCAiaW52YWxpZCAnb2JqZWN0JyBsaW5lIGZvcm1hdCAtIGJhZCBzaGExIik7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGRvbmU7CiAJfQogCWJ1ZmZlciA9IHAgKyAxOwogCiAJaWYgKCFza2lwX3ByZWZpeChidWZmZXIsICJ0eXBlICIsICZidWZmZXIpKSB7Ci0JCXJldCA9IHJlcG9ydChvcHRpb25zLCAmdGFnLT5vYmplY3QsIEZTQ0tfTVNHX01JU1NJTkdfVFlQRV9FTlRSWSwgImludmFsaWQgZm9ybWF0IC0gZXhwZWN0ZWQgJ3R5cGUnIGxpbmUiKTsKKwkJcmV0ID0gcmVwb3J0KG9wdGlvbnMsIG9pZCwgT0JKX1RBRywgRlNDS19NU0dfTUlTU0lOR19UWVBFX0VOVFJZLCAiaW52YWxpZCBmb3JtYXQgLSBleHBlY3RlZCAndHlwZScgbGluZSIpOwogCQlnb3RvIGRvbmU7CiAJfQogCWVvbCA9IHN0cmNocihidWZmZXIsICdcbicpOwogCWlmICghZW9sKSB7Ci0JCXJldCA9IHJlcG9ydChvcHRpb25zLCAmdGFnLT5vYmplY3QsIEZTQ0tfTVNHX01JU1NJTkdfVFlQRSwgImludmFsaWQgZm9ybWF0IC0gdW5leHBlY3RlZCBlbmQgYWZ0ZXIgJ3R5cGUnIGxpbmUiKTsKKwkJcmV0ID0gcmVwb3J0KG9wdGlvbnMsIG9pZCwgT0JKX1RBRywgRlNDS19NU0dfTUlTU0lOR19UWVBFLCAiaW52YWxpZCBmb3JtYXQgLSB1bmV4cGVjdGVkIGVuZCBhZnRlciAndHlwZScgbGluZSIpOwogCQlnb3RvIGRvbmU7CiAJfQogCWlmICh0eXBlX2Zyb21fc3RyaW5nX2dlbnRseShidWZmZXIsIGVvbCAtIGJ1ZmZlciwgMSkgPCAwKQotCQlyZXQgPSByZXBvcnQob3B0aW9ucywgJnRhZy0+b2JqZWN0LCBGU0NLX01TR19CQURfVFlQRSwgImludmFsaWQgJ3R5cGUnIHZhbHVlIik7CisJCXJldCA9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9UQUcsIEZTQ0tfTVNHX0JBRF9UWVBFLCAiaW52YWxpZCAndHlwZScgdmFsdWUiKTsKIAlpZiAocmV0KQogCQlnb3RvIGRvbmU7CiAJYnVmZmVyID0gZW9sICsgMTsKIAogCWlmICghc2tpcF9wcmVmaXgoYnVmZmVyLCAidGFnICIsICZidWZmZXIpKSB7Ci0JCXJldCA9IHJlcG9ydChvcHRpb25zLCAmdGFnLT5vYmplY3QsIEZTQ0tfTVNHX01JU1NJTkdfVEFHX0VOVFJZLCAiaW52YWxpZCBmb3JtYXQgLSBleHBlY3RlZCAndGFnJyBsaW5lIik7CisJCXJldCA9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9UQUcsIEZTQ0tfTVNHX01JU1NJTkdfVEFHX0VOVFJZLCAiaW52YWxpZCBmb3JtYXQgLSBleHBlY3RlZCAndGFnJyBsaW5lIik7CiAJCWdvdG8gZG9uZTsKIAl9CiAJZW9sID0gc3RyY2hyKGJ1ZmZlciwgJ1xuJyk7CiAJaWYgKCFlb2wpIHsKLQkJcmV0ID0gcmVwb3J0KG9wdGlvbnMsICZ0YWctPm9iamVjdCwgRlNDS19NU0dfTUlTU0lOR19UQUcsICJpbnZhbGlkIGZvcm1hdCAtIHVuZXhwZWN0ZWQgZW5kIGFmdGVyICd0eXBlJyBsaW5lIik7CisJCXJldCA9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9UQUcsIEZTQ0tfTVNHX01JU1NJTkdfVEFHLCAiaW52YWxpZCBmb3JtYXQgLSB1bmV4cGVjdGVkIGVuZCBhZnRlciAndHlwZScgbGluZSIpOwogCQlnb3RvIGRvbmU7CiAJfQogCXN0cmJ1Zl9hZGRmKCZzYiwgInJlZnMvdGFncy8lLipzIiwgKGludCkoZW9sIC0gYnVmZmVyKSwgYnVmZmVyKTsKIAlpZiAoY2hlY2tfcmVmbmFtZV9mb3JtYXQoc2IuYnVmLCAwKSkgewotCQlyZXQgPSByZXBvcnQob3B0aW9ucywgJnRhZy0+b2JqZWN0LCBGU0NLX01TR19CQURfVEFHX05BTUUsCi0JCQkgICAiaW52YWxpZCAndGFnJyBuYW1lOiAlLipzIiwKLQkJCSAgIChpbnQpKGVvbCAtIGJ1ZmZlciksIGJ1ZmZlcik7CisJCXJldCA9IHJlcG9ydChvcHRpb25zLCBvaWQsIE9CSl9UQUcsCisJCQkgICAgIEZTQ0tfTVNHX0JBRF9UQUdfTkFNRSwKKwkJCSAgICAgImludmFsaWQgJ3RhZycgbmFtZTogJS4qcyIsCisJCQkgICAgIChpbnQpKGVvbCAtIGJ1ZmZlciksIGJ1ZmZlcik7CiAJCWlmIChyZXQpCiAJCQlnb3RvIGRvbmU7CiAJfQpAQCAtOTA2LDMyICs4ODEsMjAgQEAKIAogCWlmICghc2tpcF9wcmVmaXgoYnVmZmVyLCAidGFnZ2VyICIsICZidWZmZXIpKSB7CiAJCS8qIGVhcmx5IHRhZ3MgZG8gbm90IGNvbnRhaW4gJ3RhZ2dlcicgbGluZXM7IHdhcm4gb25seSAqLwotCQlyZXQgPSByZXBvcnQob3B0aW9ucywgJnRhZy0+b2JqZWN0LCBGU0NLX01TR19NSVNTSU5HX1RBR0dFUl9FTlRSWSwgImludmFsaWQgZm9ybWF0IC0gZXhwZWN0ZWQgJ3RhZ2dlcicgbGluZSIpOworCQlyZXQgPSByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfVEFHLCBGU0NLX01TR19NSVNTSU5HX1RBR0dFUl9FTlRSWSwgImludmFsaWQgZm9ybWF0IC0gZXhwZWN0ZWQgJ3RhZ2dlcicgbGluZSIpOwogCQlpZiAocmV0KQogCQkJZ290byBkb25lOwogCX0KIAllbHNlCi0JCXJldCA9IGZzY2tfaWRlbnQoJmJ1ZmZlciwgJnRhZy0+b2JqZWN0LCBvcHRpb25zKTsKKwkJcmV0ID0gZnNja19pZGVudCgmYnVmZmVyLCBvaWQsIE9CSl9UQUcsIG9wdGlvbnMpOwogCiBkb25lOgogCXN0cmJ1Zl9yZWxlYXNlKCZzYik7Ci0JZnJlZSh0b19mcmVlKTsKIAlyZXR1cm4gcmV0OwogfQogCi1zdGF0aWMgaW50IGZzY2tfdGFnKHN0cnVjdCB0YWcgKnRhZywgY29uc3QgY2hhciAqZGF0YSwKLQl1bnNpZ25lZCBsb25nIHNpemUsIHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMpCi17Ci0Jc3RydWN0IG9iamVjdCAqdGFnZ2VkID0gdGFnLT50YWdnZWQ7Ci0KLQlpZiAoIXRhZ2dlZCkKLQkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCAmdGFnLT5vYmplY3QsIEZTQ0tfTVNHX0JBRF9UQUdfT0JKRUNULCAiY291bGQgbm90IGxvYWQgdGFnZ2VkIG9iamVjdCIpOwotCi0JcmV0dXJuIGZzY2tfdGFnX2J1ZmZlcih0YWcsIGRhdGEsIHNpemUsIG9wdGlvbnMpOwotfQotCiBzdHJ1Y3QgZnNja19naXRtb2R1bGVzX2RhdGEgewotCXN0cnVjdCBvYmplY3QgKm9iajsKKwljb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQ7CiAJc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9uczsKIAlpbnQgcmV0OwogfTsKQEAgLTk0OSwxOSArOTEyLDIyIEBACiAKIAluYW1lID0geG1lbWR1cHooc3Vic2VjdGlvbiwgc3Vic2VjdGlvbl9sZW4pOwogCWlmIChjaGVja19zdWJtb2R1bGVfbmFtZShuYW1lKSA8IDApCi0JCWRhdGEtPnJldCB8PSByZXBvcnQoZGF0YS0+b3B0aW9ucywgZGF0YS0+b2JqLAorCQlkYXRhLT5yZXQgfD0gcmVwb3J0KGRhdGEtPm9wdGlvbnMsCisJCQkJICAgIGRhdGEtPm9pZCwgT0JKX0JMT0IsCiAJCQkJICAgIEZTQ0tfTVNHX0dJVE1PRFVMRVNfTkFNRSwKIAkJCQkgICAgImRpc2FsbG93ZWQgc3VibW9kdWxlIG5hbWU6ICVzIiwKIAkJCQkgICAgbmFtZSk7CiAJaWYgKCFzdHJjbXAoa2V5LCAidXJsIikgJiYgdmFsdWUgJiYKIAkgICAgbG9va3NfbGlrZV9jb21tYW5kX2xpbmVfb3B0aW9uKHZhbHVlKSkKLQkJZGF0YS0+cmV0IHw9IHJlcG9ydChkYXRhLT5vcHRpb25zLCBkYXRhLT5vYmosCisJCWRhdGEtPnJldCB8PSByZXBvcnQoZGF0YS0+b3B0aW9ucywKKwkJCQkgICAgZGF0YS0+b2lkLCBPQkpfQkxPQiwKIAkJCQkgICAgRlNDS19NU0dfR0lUTU9EVUxFU19VUkwsCiAJCQkJICAgICJkaXNhbGxvd2VkIHN1Ym1vZHVsZSB1cmw6ICVzIiwKIAkJCQkgICAgdmFsdWUpOwogCWlmICghc3RyY21wKGtleSwgInBhdGgiKSAmJiB2YWx1ZSAmJgogCSAgICBsb29rc19saWtlX2NvbW1hbmRfbGluZV9vcHRpb24odmFsdWUpKQotCQlkYXRhLT5yZXQgfD0gcmVwb3J0KGRhdGEtPm9wdGlvbnMsIGRhdGEtPm9iaiwKKwkJZGF0YS0+cmV0IHw9IHJlcG9ydChkYXRhLT5vcHRpb25zLAorCQkJCSAgICBkYXRhLT5vaWQsIE9CSl9CTE9CLAogCQkJCSAgICBGU0NLX01TR19HSVRNT0RVTEVTX1BBVEgsCiAJCQkJICAgICJkaXNhbGxvd2VkIHN1Ym1vZHVsZSBwYXRoOiAlcyIsCiAJCQkJICAgIHZhbHVlKTsKQEAgLTk3MCwxNyArOTM2LDE3IEBACiAJcmV0dXJuIDA7CiB9CiAKLXN0YXRpYyBpbnQgZnNja19ibG9iKHN0cnVjdCBibG9iICpibG9iLCBjb25zdCBjaGFyICpidWYsCitzdGF0aWMgaW50IGZzY2tfYmxvYihjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQsIGNvbnN0IGNoYXIgKmJ1ZiwKIAkJICAgICB1bnNpZ25lZCBsb25nIHNpemUsIHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMpCiB7CiAJc3RydWN0IGZzY2tfZ2l0bW9kdWxlc19kYXRhIGRhdGE7CiAJc3RydWN0IGNvbmZpZ19vcHRpb25zIGNvbmZpZ19vcHRzID0geyAwIH07CiAKLQlpZiAoIW9pZHNldF9jb250YWlucygmZ2l0bW9kdWxlc19mb3VuZCwgJmJsb2ItPm9iamVjdC5vaWQpKQorCWlmICghb2lkc2V0X2NvbnRhaW5zKCZnaXRtb2R1bGVzX2ZvdW5kLCBvaWQpKQogCQlyZXR1cm4gMDsKLQlvaWRzZXRfaW5zZXJ0KCZnaXRtb2R1bGVzX2RvbmUsICZibG9iLT5vYmplY3Qub2lkKTsKKwlvaWRzZXRfaW5zZXJ0KCZnaXRtb2R1bGVzX2RvbmUsIG9pZCk7CiAKLQlpZiAob2JqZWN0X29uX3NraXBsaXN0KG9wdGlvbnMsICZibG9iLT5vYmplY3QpKQorCWlmIChvYmplY3Rfb25fc2tpcGxpc3Qob3B0aW9ucywgb2lkKSkKIAkJcmV0dXJuIDA7CiAKIAlpZiAoIWJ1ZikgewpAQCAtOTg5LDE4ICs5NTUsMTggQEAKIAkJICogYmxvYiB0b28gZ2lnYW50aWMgdG8gbG9hZCBpbnRvIG1lbW9yeS4gTGV0J3MganVzdCBjb25zaWRlcgogCQkgKiB0aGF0IGFuIGVycm9yLgogCQkgKi8KLQkJcmV0dXJuIHJlcG9ydChvcHRpb25zLCAmYmxvYi0+b2JqZWN0LAorCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9pZCwgT0JKX0JMT0IsCiAJCQkgICAgICBGU0NLX01TR19HSVRNT0RVTEVTX0xBUkdFLAogCQkJICAgICAgIi5naXRtb2R1bGVzIHRvbyBsYXJnZSB0byBwYXJzZSIpOwogCX0KIAotCWRhdGEub2JqID0gJmJsb2ItPm9iamVjdDsKKwlkYXRhLm9pZCA9IG9pZDsKIAlkYXRhLm9wdGlvbnMgPSBvcHRpb25zOwogCWRhdGEucmV0ID0gMDsKIAljb25maWdfb3B0cy5lcnJvcl9hY3Rpb24gPSBDT05GSUdfRVJST1JfU0lMRU5UOwogCWlmIChnaXRfY29uZmlnX2Zyb21fbWVtKGZzY2tfZ2l0bW9kdWxlc19mbiwgQ09ORklHX09SSUdJTl9CTE9CLAogCQkJCSIuZ2l0bW9kdWxlcyIsIGJ1Ziwgc2l6ZSwgJmRhdGEsICZjb25maWdfb3B0cykpCi0JCWRhdGEucmV0IHw9IHJlcG9ydChvcHRpb25zLCAmYmxvYi0+b2JqZWN0LAorCQlkYXRhLnJldCB8PSByZXBvcnQob3B0aW9ucywgb2lkLCBPQkpfQkxPQiwKIAkJCQkgICBGU0NLX01TR19HSVRNT0RVTEVTX1BBUlNFLAogCQkJCSAgICJjb3VsZCBub3QgcGFyc2UgZ2l0bW9kdWxlcyBibG9iIik7CiAKQEAgLTEwMTEsMzEgKzk3NywzMyBAQAogCXN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMpCiB7CiAJaWYgKCFvYmopCi0JCXJldHVybiByZXBvcnQob3B0aW9ucywgb2JqLCBGU0NLX01TR19CQURfT0JKRUNUX1NIQTEsICJubyB2YWxpZCBvYmplY3QgdG8gZnNjayIpOworCQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIE5VTEwsIE9CSl9OT05FLCBGU0NLX01TR19CQURfT0JKRUNUX1NIQTEsICJubyB2YWxpZCBvYmplY3QgdG8gZnNjayIpOwogCiAJaWYgKG9iai0+dHlwZSA9PSBPQkpfQkxPQikKLQkJcmV0dXJuIGZzY2tfYmxvYigoc3RydWN0IGJsb2IgKilvYmosIGRhdGEsIHNpemUsIG9wdGlvbnMpOworCQlyZXR1cm4gZnNja19ibG9iKCZvYmotPm9pZCwgZGF0YSwgc2l6ZSwgb3B0aW9ucyk7CiAJaWYgKG9iai0+dHlwZSA9PSBPQkpfVFJFRSkKLQkJcmV0dXJuIGZzY2tfdHJlZSgoc3RydWN0IHRyZWUgKikgb2JqLCBvcHRpb25zKTsKKwkJcmV0dXJuIGZzY2tfdHJlZSgmb2JqLT5vaWQsIGRhdGEsIHNpemUsIG9wdGlvbnMpOwogCWlmIChvYmotPnR5cGUgPT0gT0JKX0NPTU1JVCkKLQkJcmV0dXJuIGZzY2tfY29tbWl0KChzdHJ1Y3QgY29tbWl0ICopIG9iaiwgKGNvbnN0IGNoYXIgKikgZGF0YSwKLQkJCXNpemUsIG9wdGlvbnMpOworCQlyZXR1cm4gZnNja19jb21taXQoJm9iai0+b2lkLCBkYXRhLCBzaXplLCBvcHRpb25zKTsKIAlpZiAob2JqLT50eXBlID09IE9CSl9UQUcpCi0JCXJldHVybiBmc2NrX3RhZygoc3RydWN0IHRhZyAqKSBvYmosIChjb25zdCBjaGFyICopIGRhdGEsCi0JCQlzaXplLCBvcHRpb25zKTsKKwkJcmV0dXJuIGZzY2tfdGFnKCZvYmotPm9pZCwgZGF0YSwgc2l6ZSwgb3B0aW9ucyk7CiAKLQlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsIG9iaiwgRlNDS19NU0dfVU5LTk9XTl9UWVBFLCAidW5rbm93biB0eXBlICclZCcgKGludGVybmFsIGZzY2sgZXJyb3IpIiwKLQkJCSAgb2JqLT50eXBlKTsKKwlyZXR1cm4gcmVwb3J0KG9wdGlvbnMsICZvYmotPm9pZCwgb2JqLT50eXBlLAorCQkgICAgICBGU0NLX01TR19VTktOT1dOX1RZUEUsCisJCSAgICAgICJ1bmtub3duIHR5cGUgJyVkJyAoaW50ZXJuYWwgZnNjayBlcnJvcikiLAorCQkgICAgICBvYmotPnR5cGUpOwogfQogCiBpbnQgZnNja19lcnJvcl9mdW5jdGlvbihzdHJ1Y3QgZnNja19vcHRpb25zICpvLAotCXN0cnVjdCBvYmplY3QgKm9iaiwgaW50IG1zZ190eXBlLCBjb25zdCBjaGFyICptZXNzYWdlKQorCQkJY29uc3Qgc3RydWN0IG9iamVjdF9pZCAqb2lkLAorCQkJZW51bSBvYmplY3RfdHlwZSBvYmplY3RfdHlwZSwKKwkJCWludCBtc2dfdHlwZSwgY29uc3QgY2hhciAqbWVzc2FnZSkKIHsKIAlpZiAobXNnX3R5cGUgPT0gRlNDS19XQVJOKSB7Ci0JCXdhcm5pbmcoIm9iamVjdCAlczogJXMiLCBkZXNjcmliZV9vYmplY3Qobywgb2JqKSwgbWVzc2FnZSk7CisJCXdhcm5pbmcoIm9iamVjdCAlczogJXMiLCBmc2NrX2Rlc2NyaWJlX29iamVjdChvLCBvaWQpLCBtZXNzYWdlKTsKIAkJcmV0dXJuIDA7CiAJfQotCWVycm9yKCJvYmplY3QgJXM6ICVzIiwgZGVzY3JpYmVfb2JqZWN0KG8sIG9iaiksIG1lc3NhZ2UpOworCWVycm9yKCJvYmplY3QgJXM6ICVzIiwgZnNja19kZXNjcmliZV9vYmplY3Qobywgb2lkKSwgbWVzc2FnZSk7CiAJcmV0dXJuIDE7CiB9CiAKQEAgLTEwNDcsNyArMTAxNSw2IEBACiAKIAlvaWRzZXRfaXRlcl9pbml0KCZnaXRtb2R1bGVzX2ZvdW5kLCAmaXRlcik7CiAJd2hpbGUgKChvaWQgPSBvaWRzZXRfaXRlcl9uZXh0KCZpdGVyKSkpIHsKLQkJc3RydWN0IGJsb2IgKmJsb2I7CiAJCWVudW0gb2JqZWN0X3R5cGUgdHlwZTsKIAkJdW5zaWduZWQgbG9uZyBzaXplOwogCQljaGFyICpidWY7CkBAIC0xMDU1LDI5ICsxMDIyLDIyIEBACiAJCWlmIChvaWRzZXRfY29udGFpbnMoJmdpdG1vZHVsZXNfZG9uZSwgb2lkKSkKIAkJCWNvbnRpbnVlOwogCi0JCWJsb2IgPSBsb29rdXBfYmxvYih0aGVfcmVwb3NpdG9yeSwgb2lkKTsKLQkJaWYgKCFibG9iKSB7Ci0JCQlzdHJ1Y3Qgb2JqZWN0ICpvYmogPSBsb29rdXBfdW5rbm93bl9vYmplY3Qob2lkKTsKLQkJCXJldCB8PSByZXBvcnQob3B0aW9ucywgb2JqLAotCQkJCSAgICAgIEZTQ0tfTVNHX0dJVE1PRFVMRVNfQkxPQiwKLQkJCQkgICAgICAibm9uLWJsb2IgZm91bmQgYXQgLmdpdG1vZHVsZXMiKTsKLQkJCWNvbnRpbnVlOwotCQl9Ci0KIAkJYnVmID0gcmVhZF9vYmplY3RfZmlsZShvaWQsICZ0eXBlLCAmc2l6ZSk7CiAJCWlmICghYnVmKSB7Ci0JCQlpZiAoaXNfcHJvbWlzb3Jfb2JqZWN0KCZibG9iLT5vYmplY3Qub2lkKSkKKwkJCWlmIChpc19wcm9taXNvcl9vYmplY3Qob2lkKSkKIAkJCQljb250aW51ZTsKLQkJCXJldCB8PSByZXBvcnQob3B0aW9ucywgJmJsb2ItPm9iamVjdCwKKwkJCXJldCB8PSByZXBvcnQob3B0aW9ucywKKwkJCQkgICAgICBvaWQsIE9CSl9CTE9CLAogCQkJCSAgICAgIEZTQ0tfTVNHX0dJVE1PRFVMRVNfTUlTU0lORywKIAkJCQkgICAgICAidW5hYmxlIHRvIHJlYWQgLmdpdG1vZHVsZXMgYmxvYiIpOwogCQkJY29udGludWU7CiAJCX0KIAogCQlpZiAodHlwZSA9PSBPQkpfQkxPQikKLQkJCXJldCB8PSBmc2NrX2Jsb2IoYmxvYiwgYnVmLCBzaXplLCBvcHRpb25zKTsKKwkJCXJldCB8PSBmc2NrX2Jsb2Iob2lkLCBidWYsIHNpemUsIG9wdGlvbnMpOwogCQllbHNlCi0JCQlyZXQgfD0gcmVwb3J0KG9wdGlvbnMsICZibG9iLT5vYmplY3QsCisJCQlyZXQgfD0gcmVwb3J0KG9wdGlvbnMsCisJCQkJICAgICAgb2lkLCB0eXBlLAogCQkJCSAgICAgIEZTQ0tfTVNHX0dJVE1PRFVMRVNfQkxPQiwKIAkJCQkgICAgICAibm9uLWJsb2IgZm91bmQgYXQgLmdpdG1vZHVsZXMiKTsKIAkJZnJlZShidWYpOwpkaWZmIC0tZ2l0IGEvZnNjay5oIGIvZnNjay5oCmluZGV4IGI5NTU5NWEuLjY5Y2Y3MTUgMTAwNjQ0Ci0tLSBhL2ZzY2suaAorKysgYi9mc2NrLmgKQEAgLTI3LDEwICsyNywxMiBAQAogCiAvKiBjYWxsYmFjayBmb3IgZnNja19vYmplY3QsIHR5cGUgaXMgRlNDS19FUlJPUiBvciBGU0NLX1dBUk4gKi8KIHR5cGVkZWYgaW50ICgqZnNja19lcnJvcikoc3RydWN0IGZzY2tfb3B0aW9ucyAqbywKLQlzdHJ1Y3Qgb2JqZWN0ICpvYmosIGludCB0eXBlLCBjb25zdCBjaGFyICptZXNzYWdlKTsKKwkJCSAgY29uc3Qgc3RydWN0IG9iamVjdF9pZCAqb2lkLCBlbnVtIG9iamVjdF90eXBlIG9iamVjdF90eXBlLAorCQkJICBpbnQgbXNnX3R5cGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOwogCiBpbnQgZnNja19lcnJvcl9mdW5jdGlvbihzdHJ1Y3QgZnNja19vcHRpb25zICpvLAotCXN0cnVjdCBvYmplY3QgKm9iaiwgaW50IHR5cGUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UpOworCQkJY29uc3Qgc3RydWN0IG9iamVjdF9pZCAqb2lkLCBlbnVtIG9iamVjdF90eXBlIG9iamVjdF90eXBlLAorCQkJaW50IG1zZ190eXBlLCBjb25zdCBjaGFyICptZXNzYWdlKTsKIAogc3RydWN0IGZzY2tfb3B0aW9ucyB7CiAJZnNja193YWxrX2Z1bmMgd2FsazsKQEAgLTM4LDcgKzQwLDcgQEAKIAl1bnNpZ25lZCBzdHJpY3Q6MTsKIAlpbnQgKm1zZ190eXBlOwogCXN0cnVjdCBvaWRzZXQgc2tpcGxpc3Q7Ci0Jc3RydWN0IGRlY29yYXRpb24gKm9iamVjdF9uYW1lczsKKwlraF9vaWRfbWFwX3QgKm9iamVjdF9uYW1lczsKIH07CiAKICNkZWZpbmUgRlNDS19PUFRJT05TX0RFRkFVTFQgeyBOVUxMLCBmc2NrX2Vycm9yX2Z1bmN0aW9uLCAwLCBOVUxMLCBPSURTRVRfSU5JVCB9CkBAIC01Miw3ICs1NCwxMSBAQAogICogICAgMAkJZXZlcnl0aGluZyBPSwogICovCiBpbnQgZnNja193YWxrKHN0cnVjdCBvYmplY3QgKm9iaiwgdm9pZCAqZGF0YSwgc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9ucyk7Ci0vKiBJZiBOVUxMIGlzIHBhc3NlZCBmb3IgZGF0YSwgd2UgYXNzdW1lIHRoZSBvYmplY3QgaXMgbG9jYWwgYW5kIHJlYWQgaXQuICovCisKKy8qCisgKiBCbG9iIG9iamVjdHMgbXkgcGFzcyBhIE5VTEwgZGF0YSBwb2ludGVyLCB3aGljaCBpbmRpY2F0ZXMgdGhleSBhcmUgdG9vIGxhcmdlCisgKiB0byBmaXQgaW4gbWVtb3J5LiBBbGwgb3RoZXIgdHlwZXMgbXVzdCBwYXNzIGEgcmVhbCBidWZmZXIuCisgKi8KIGludCBmc2NrX29iamVjdChzdHJ1Y3Qgb2JqZWN0ICpvYmosIHZvaWQgKmRhdGEsIHVuc2lnbmVkIGxvbmcgc2l6ZSwKIAlzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zKTsKIApAQCAtNjMsNCArNjksMjkgQEAKICAqLwogaW50IGZzY2tfZmluaXNoKHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMpOwogCisvKgorICogU3Vic3lzdGVtIGZvciBzdG9yaW5nIGh1bWFuLXJlYWRhYmxlIG5hbWVzIGZvciBlYWNoIG9iamVjdC4KKyAqCisgKiBJZiBmc2NrX2VuYWJsZV9vYmplY3RfbmFtZXMoKSBoYXMgbm90IGJlZW4gY2FsbGVkLCBhbGwgb3RoZXIgZnVuY3Rpb25zIGFyZQorICogbm9vcHMuCisgKgorICogVXNlIGZzY2tfcHV0X29iamVjdF9uYW1lKCkgdG8gc2VlZCBpbml0aWFsIG5hbWVzIChlLmcuIGZyb20gcmVmbmFtZXMpOyB0aGUKKyAqIGZzY2sgY29kZSB3aWxsIGV4dGVuZCB0aGF0IHdoaWxlIHdhbGtpbmcgdHJlZXMsIGV0Yy4KKyAqCisgKiBVc2UgZnNja19nZXRfb2JqZWN0X25hbWUoKSB0byBnZXQgYSBzaW5nbGUgbmFtZSAob3IgTlVMTCBpZiBub25lKS4gT3IgdGhlCisgKiBtb3JlIGNvbnZlbmllbnQgZGVzY3JpYmVfb2JqZWN0KCksIHdoaWNoIGFsd2F5cyBwcm9kdWNlcyBhbiBvdXRwdXQgc3RyaW5nCisgKiB3aXRoIHRoZSBvaWQgY29tYmluZWQgd2l0aCB0aGUgbmFtZSAoaWYgYW55KS4gTm90ZSB0aGF0IHRoZSByZXR1cm4gdmFsdWUKKyAqIHBvaW50cyB0byBhIHJvdGF0aW5nIGFycmF5IG9mIHN0YXRpYyBidWZmZXJzLCBhbmQgbWF5IGJlIGludmFsaWRhdGVkIGJ5IGEKKyAqIHN1YnNlcXVlbnQgY2FsbC4KKyAqLwordm9pZCBmc2NrX2VuYWJsZV9vYmplY3RfbmFtZXMoc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9ucyk7Citjb25zdCBjaGFyICpmc2NrX2dldF9vYmplY3RfbmFtZShzdHJ1Y3QgZnNja19vcHRpb25zICpvcHRpb25zLAorCQkJCSBjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQpOworX19hdHRyaWJ1dGVfXygoZm9ybWF0IChwcmludGYsMyw0KSkpCit2b2lkIGZzY2tfcHV0X29iamVjdF9uYW1lKHN0cnVjdCBmc2NrX29wdGlvbnMgKm9wdGlvbnMsCisJCQkgIGNvbnN0IHN0cnVjdCBvYmplY3RfaWQgKm9pZCwKKwkJCSAgY29uc3QgY2hhciAqZm10LCAuLi4pOworY29uc3QgY2hhciAqZnNja19kZXNjcmliZV9vYmplY3Qoc3RydWN0IGZzY2tfb3B0aW9ucyAqb3B0aW9ucywKKwkJCQkgY29uc3Qgc3RydWN0IG9iamVjdF9pZCAqb2lkKTsKKwogI2VuZGlmCmRpZmYgLS1naXQgYS9naXQtY3ZzaW1wb3J0LnBlcmwgYi9naXQtY3ZzaW1wb3J0LnBlcmwKaW5kZXggYjMxNjEzYy4uMTA1N2YzOCAxMDA3NTUKLS0tIGEvZ2l0LWN2c2ltcG9ydC5wZXJsCisrKyBiL2dpdC1jdnNpbXBvcnQucGVybApAQCAtNjAwLDcgKzYwMCw3IEBACiBzdWIgcGRhdGUoJCkgewogCW15ICgkZCkgPSBAXzsKIAltIyhcZHsyLDR9KS8oXGRcZCkvKFxkXGQpXHMoXGRcZCk6KFxkXGQpKD86OihcZFxkKSk/IwotCQlvciBkaWUgIlVucGFyc2VhYmxlIGRhdGU6ICRkXG4iOworCQlvciBkaWUgIlVucGFyc2FibGUgZGF0ZTogJGRcbiI7CiAJbXkgJHk9JDE7CiAJJHkrPTEwMCBpZiAkeTw3MDsKIAkkeSs9MTkwMCBpZiAkeTwxMDAwOwpkaWZmIC0tZ2l0IGEvZ2l0LWxlZ2FjeS1zdGFzaC5zaCBiL2dpdC1sZWdhY3ktc3Rhc2guc2gKaW5kZXggMDdhZDRhNS4uNTNmYTU3NCAxMDA3NTUKLS0tIGEvZ2l0LWxlZ2FjeS1zdGFzaC5zaAorKysgYi9naXQtbGVnYWN5LXN0YXNoLnNoCkBAIC0xOTMsNyArMTkzLDggQEAKIAkJCUdJVF9JTkRFWF9GSUxFPSIkVE1QaW5kZXgiICYmCiAJCQlleHBvcnQgR0lUX0lOREVYX0ZJTEUgJiYKIAkJCWdpdCBkaWZmLWluZGV4IC0tbmFtZS1vbmx5IC16IEhFQUQgLS0gIiRAIiA+IiRUTVAtc3RhZ2VuYW1lcyIgJiYKLQkJCWdpdCB1cGRhdGUtaW5kZXggLXogLS1hZGQgLS1yZW1vdmUgLS1zdGRpbiA8IiRUTVAtc3RhZ2VuYW1lcyIgJiYKKwkJCWdpdCB1cGRhdGUtaW5kZXggLS1pZ25vcmUtc2tpcC13b3JrdHJlZS1lbnRyaWVzIFwKKwkJCQkteiAtLWFkZCAtLXJlbW92ZSAtLXN0ZGluIDwiJFRNUC1zdGFnZW5hbWVzIiAmJgogCQkJZ2l0IHdyaXRlLXRyZWUgJiYKIAkJCXJtIC1mICIkVE1QaW5kZXgiCiAJCSkgKSB8fApkaWZmIC0tZ2l0IGEvZ2l0LXNlbmQtZW1haWwucGVybCBiL2dpdC1zZW5kLWVtYWlsLnBlcmwKaW5kZXggNWY5MmM4OS4uZGM5NTY1NiAxMDA3NTUKLS0tIGEvZ2l0LXNlbmQtZW1haWwucGVybAorKysgYi9naXQtc2VuZC1lbWFpbC5wZXJsCkBAIC0xMjI4LDcgKzEyMjgsNyBAQAogIyBkb21haW4gbmFtZSB0aGF0IGNvcnJlc3BvbmRzIHRoZSBJUCBhZGRyZXNzIGluIHRoZSBIRUxPL0VITE8KICMgaGFuZHNoYWtlLiBUaGlzIGlzIHVzZWQgdG8gdmVyaWZ5IHRoZSBjb25uZWN0aW9uIGFuZCBwcmV2ZW50CiAjIHNwYW1tZXJzIGZyb20gdHJ5aW5nIHRvIGhpZGUgdGhlaXIgaWRlbnRpdHkuIElmIHRoZSBETlMgYW5kIElQIGRvbid0Ci0jIG1hdGNoLCB0aGUgcmVjZWl2ZWluZyBNVEEgbWF5IGRlbnkgdGhlIGNvbm5lY3Rpb24uCisjIG1hdGNoLCB0aGUgcmVjZWl2aW5nIE1UQSBtYXkgZGVueSB0aGUgY29ubmVjdGlvbi4KICMKICMgSGVyZSBpcyBhIGRlbnkgZXhhbXBsZSBvZiBOZXQ6OlNNVFAgd2l0aCB0aGUgZGVmYXVsdCAibG9jYWxob3N0LmxvY2FsZG9tYWluIgogIwpkaWZmIC0tZ2l0IGEvZ2l0d2ViL2dpdHdlYi5wZXJsIGIvZ2l0d2ViL2dpdHdlYi5wZXJsCmluZGV4IDdmZWYxOWYuLjNkMDYzZTIgMTAwNzU1Ci0tLSBhL2dpdHdlYi9naXR3ZWIucGVybAorKysgYi9naXR3ZWIvZ2l0d2ViLnBlcmwKQEAgLTE2NTcsMTUgKzE2NTcsMTUgQEAKIAlteSAkY250cmwgPSBzaGlmdDsKIAlteSAlb3B0cyA9IEBfOwogCW15ICVlcyA9ICggIyBjaGFyYWN0ZXIgZXNjYXBlIGNvZGVzLCBha2EgZXNjYXBlIHNlcXVlbmNlcwotCQkiXHQiID0+ICdcdCcsICAgIyB0YWIgICAgICAgICAgICAoSFQpCi0JCSJcbiIgPT4gJ1xuJywgICAjIGxpbmUgZmVlZCAgICAgIChMRikKLQkJIlxyIiA9PiAnXHInLCAgICMgY2FycmlnZSByZXR1cm4gKENSKQotCQkiXGYiID0+ICdcZicsICAgIyBmb3JtIGZlZWQgICAgICAoRkYpCi0JCSJcYiIgPT4gJ1xiJywgICAjIGJhY2tzcGFjZSAgICAgIChCUykKLQkJIlxhIiA9PiAnXGEnLCAgICMgYWxhcm0gKGJlbGwpICAgKEJFTCkKLQkJIlxlIiA9PiAnXGUnLCAgICMgZXNjYXBlICAgICAgICAgKEVTQykKLQkJIlwwMTMiID0+ICdcdicsICMgdmVydGljYWwgdGFiICAgKFZUKQotCQkiXDAwMCIgPT4gJ1wwJywgIyBudWwgY2hhcmFjdGVyICAoTlVMKQorCQkiXHQiID0+ICdcdCcsICAgIyB0YWIgICAgICAgICAgICAgKEhUKQorCQkiXG4iID0+ICdcbicsICAgIyBsaW5lIGZlZWQgICAgICAgKExGKQorCQkiXHIiID0+ICdccicsICAgIyBjYXJyaWFnZSByZXR1cm4gKENSKQorCQkiXGYiID0+ICdcZicsICAgIyBmb3JtIGZlZWQgICAgICAgKEZGKQorCQkiXGIiID0+ICdcYicsICAgIyBiYWNrc3BhY2UgICAgICAgKEJTKQorCQkiXGEiID0+ICdcYScsICAgIyBhbGFybSAoYmVsbCkgICAgKEJFTCkKKwkJIlxlIiA9PiAnXGUnLCAgICMgZXNjYXBlICAgICAgICAgIChFU0MpCisJCSJcMDEzIiA9PiAnXHYnLCAjIHZlcnRpY2FsIHRhYiAgICAoVlQpCisJCSJcMDAwIiA9PiAnXDAnLCAjIG51bCBjaGFyYWN0ZXIgICAoTlVMKQogCSk7CiAJbXkgJGNociA9ICggKGV4aXN0cyAkZXN7JGNudHJsfSkKIAkJICAgID8gJGVzeyRjbnRybH0KZGlmZiAtLWdpdCBhL2dyYXBoLmMgYi9ncmFwaC5jCmluZGV4IGY1MzEzNTQuLmUzZmQwZWEgMTAwNjQ0Ci0tLSBhL2dyYXBoLmMKKysrIGIvZ3JhcGguYwpAQCAtMTEyLDE0ICsxMTIsNDIgQEAKIAlyZXR1cm4gY29sdW1uX2NvbG9yc1tjb2xvcl07CiB9CiAKLXN0YXRpYyB2b2lkIHN0cmJ1Zl93cml0ZV9jb2x1bW4oc3RydWN0IHN0cmJ1ZiAqc2IsIGNvbnN0IHN0cnVjdCBjb2x1bW4gKmMsCi0JCQkJY2hhciBjb2xfY2hhcikKK3N0cnVjdCBncmFwaF9saW5lIHsKKwlzdHJ1Y3Qgc3RyYnVmICpidWY7CisJc2l6ZV90IHdpZHRoOworfTsKKworc3RhdGljIGlubGluZSB2b2lkIGdyYXBoX2xpbmVfYWRkY2goc3RydWN0IGdyYXBoX2xpbmUgKmxpbmUsIGludCBjKQoreworCXN0cmJ1Zl9hZGRjaChsaW5lLT5idWYsIGMpOworCWxpbmUtPndpZHRoKys7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBncmFwaF9saW5lX2FkZGNoYXJzKHN0cnVjdCBncmFwaF9saW5lICpsaW5lLCBpbnQgYywgc2l6ZV90IG4pCit7CisJc3RyYnVmX2FkZGNoYXJzKGxpbmUtPmJ1ZiwgYywgbik7CisJbGluZS0+d2lkdGggKz0gbjsKK30KKworc3RhdGljIGlubGluZSB2b2lkIGdyYXBoX2xpbmVfYWRkc3RyKHN0cnVjdCBncmFwaF9saW5lICpsaW5lLCBjb25zdCBjaGFyICpzKQoreworCXN0cmJ1Zl9hZGRzdHIobGluZS0+YnVmLCBzKTsKKwlsaW5lLT53aWR0aCArPSBzdHJsZW4ocyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZCBncmFwaF9saW5lX2FkZGNvbG9yKHN0cnVjdCBncmFwaF9saW5lICpsaW5lLCB1bnNpZ25lZCBzaG9ydCBjb2xvcikKK3sKKwlzdHJidWZfYWRkc3RyKGxpbmUtPmJ1ZiwgY29sdW1uX2dldF9jb2xvcl9jb2RlKGNvbG9yKSk7Cit9CisKK3N0YXRpYyB2b2lkIGdyYXBoX2xpbmVfd3JpdGVfY29sdW1uKHN0cnVjdCBncmFwaF9saW5lICpsaW5lLCBjb25zdCBzdHJ1Y3QgY29sdW1uICpjLAorCQkJCSAgICBjaGFyIGNvbF9jaGFyKQogewogCWlmIChjLT5jb2xvciA8IGNvbHVtbl9jb2xvcnNfbWF4KQotCQlzdHJidWZfYWRkc3RyKHNiLCBjb2x1bW5fZ2V0X2NvbG9yX2NvZGUoYy0+Y29sb3IpKTsKLQlzdHJidWZfYWRkY2goc2IsIGNvbF9jaGFyKTsKKwkJZ3JhcGhfbGluZV9hZGRjb2xvcihsaW5lLCBjLT5jb2xvcik7CisJZ3JhcGhfbGluZV9hZGRjaChsaW5lLCBjb2xfY2hhcik7CiAJaWYgKGMtPmNvbG9yIDwgY29sdW1uX2NvbG9yc19tYXgpCi0JCXN0cmJ1Zl9hZGRzdHIoc2IsIGNvbHVtbl9nZXRfY29sb3JfY29kZShjb2x1bW5fY29sb3JzX21heCkpOworCQlncmFwaF9saW5lX2FkZGNvbG9yKGxpbmUsIGNvbHVtbl9jb2xvcnNfbWF4KTsKIH0KIAogc3RydWN0IGdpdF9ncmFwaCB7CkBAIC0xNzUsOSArMjAzLDYzIEBACiAJICovCiAJaW50IHByZXZfY29tbWl0X2luZGV4OwogCS8qCisJICogV2hpY2ggbGF5b3V0IHZhcmlhbnQgdG8gdXNlIHRvIGRpc3BsYXkgbWVyZ2UgY29tbWl0cy4gSWYgdGhlCisJICogY29tbWl0J3MgZmlyc3QgcGFyZW50IGlzIGtub3duIHRvIGJlIGluIGEgY29sdW1uIHRvIHRoZSBsZWZ0IG9mIHRoZQorCSAqIG1lcmdlLCB0aGVuIHRoaXMgdmFsdWUgaXMgMCBhbmQgd2UgdXNlIHRoZSBsYXlvdXQgb24gdGhlIGxlZnQuCisJICogT3RoZXJ3aXNlLCB0aGUgdmFsdWUgaXMgMSBhbmQgdGhlIGxheW91dCBvbiB0aGUgcmlnaHQgaXMgdXNlZC4gVGhpcworCSAqIGZpZWxkIHRlbGxzIHVzIGhvdyBtYW55IGNvbHVtbnMgdGhlIGZpcnN0IHBhcmVudCBvY2N1cGllcy4KKwkgKgorCSAqIAkJMCkJCQkxKQorCSAqCisJICogCQl8IHwgfCAqLS4JCXwgfCAqLS0tLgorCSAqIAkJfCB8X3wvfFwgXAkJfCB8IHxcIFwgXAorCSAqIAkJfC98IHwgfCB8IHwJCXwgfCB8IHwgfCAqCisJICovCisJaW50IG1lcmdlX2xheW91dDsKKwkvKgorCSAqIFRoZSBudW1iZXIgb2YgY29sdW1ucyBhZGRlZCB0byB0aGUgZ3JhcGggYnkgdGhlIGN1cnJlbnQgY29tbWl0LiBGb3IKKwkgKiAyLXdheSBhbmQgb2N0b3B1cyBtZXJnZXMsIHRoaXMgaXMgaXMgdXN1YWxseSBvbmUgbGVzcyB0aGFuIHRoZQorCSAqIG51bWJlciBvZiBwYXJlbnRzOgorCSAqCisJICogCQl8IHwgfAkJCXwgfCAgICBcCisJICoJCXwgKiB8CQkJfCAqLS0tLiBcCisJICoJCXwgfFwgXAkJCXwgfFwgXCBcIFwKKwkgKgkJfCB8IHwgfCAgICAgICAgIAl8IHwgfCB8IHwgfAorCSAqCisJICoJCW51bV9wYXJlbnRzOiAyCQludW1fcGFyZW50czogNAorCSAqCQllZGdlc19hZGRlZDogMQkJZWRnZXNfYWRkZWQ6IDMKKwkgKgorCSAqIEZvciBsZWZ0LXNrZXdlZCBtZXJnZXMsIHRoZSBmaXJzdCBwYXJlbnQgZnVzZXMgd2l0aCBpdHMgbmVpZ2hib3IgYW5kCisJICogc28gb25lIGxlc3MgY29sdW1uIGlzIGFkZGVkOgorCSAqCisJICoJCXwgfCB8CQkJfCB8ICBcCisJICoJCXwgKiB8CQkJfCAqLS4gXAorCSAqCQl8L3wgfAkJCXwvfFwgXCBcCisJICoJCXwgfCB8CQkJfCB8IHwgfCB8CisJICoKKwkgKgkJbnVtX3BhcmVudHM6IDIJCW51bV9wYXJlbnRzOiA0CisJICoJCWVkZ2VzX2FkZGVkOiAwCQllZGdlc19hZGRlZDogMgorCSAqCisJICogVGhpcyBudW1iZXIgZGV0ZXJtaW5lcyBob3cgZWRnZXMgdG8gdGhlIHJpZ2h0IG9mIHRoZSBtZXJnZSBhcmUKKwkgKiBkaXNwbGF5ZWQgaW4gY29tbWl0IGFuZCBwb3N0LW1lcmdlIGxpbmVzOyBpZiBubyBjb2x1bW5zIGhhdmUgYmVlbgorCSAqIGFkZGVkIHRoZW4gYSB2ZXJ0aWNhbCBsaW5lIHNob3VsZCBiZSB1c2VkIHdoZXJlIGEgcmlnaHQtdHJhY2tpbmcKKwkgKiBsaW5lIHdvdWxkIG90aGVyd2lzZSBiZSB1c2VkLgorCSAqCisJICoJCXwgKiBcCQkJfCAqIHwKKwkgKgkJfCB8XCBcCQkJfC98IHwKKwkgKgkJfCB8ICogXAkJCXwgKiB8CisJICovCisJaW50IGVkZ2VzX2FkZGVkOworCS8qCisJICogVGhlIG51bWJlciBvZiBjb2x1bW5zIGFkZGVkIGJ5IHRoZSBwcmV2aW91cyBjb21taXQsIHdoaWNoIGlzIHVzZWQgdG8KKwkgKiBzbW9vdGggZWRnZXMgYXBwZWFyaW5nIHRvIHRoZSByaWdodCBvZiBhIGNvbW1pdCBpbiBhIGNvbW1pdCBsaW5lCisJICogZm9sbG93aW5nIGEgcG9zdC1tZXJnZSBsaW5lLgorCSAqLworCWludCBwcmV2X2VkZ2VzX2FkZGVkOworCS8qCiAJICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbHVtbnMgdGhhdCBjYW4gYmUgc3RvcmVkIGluIHRoZSBjb2x1bW5zCiAJICogYW5kIG5ld19jb2x1bW5zIGFycmF5cy4gIFRoaXMgaXMgYWxzbyBoYWxmIHRoZSBudW1iZXIgb2YgZW50cmllcwotCSAqIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiB0aGUgbWFwcGluZyBhbmQgbmV3X21hcHBpbmcgYXJyYXlzLgorCSAqIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiB0aGUgbWFwcGluZyBhbmQgb2xkX21hcHBpbmcgYXJyYXlzLgogCSAqLwogCWludCBjb2x1bW5fY2FwYWNpdHk7CiAJLyoKQEAgLTIxNSwxMiArMjk3LDEyIEBACiAJICovCiAJaW50ICptYXBwaW5nOwogCS8qCi0JICogQSB0ZW1wb3JhcnkgYXJyYXkgZm9yIGNvbXB1dGluZyB0aGUgbmV4dCBtYXBwaW5nIHN0YXRlCi0JICogd2hpbGUgd2UgYXJlIG91dHB1dHRpbmcgYSBtYXBwaW5nIGxpbmUuICBUaGlzIGlzIHN0b3JlZCBhcyBwYXJ0Ci0JICogb2YgdGhlIGdpdF9ncmFwaCBzaW1wbHkgc28gd2UgZG9uJ3QgaGF2ZSB0byBhbGxvY2F0ZSBhIG5ldwotCSAqIHRlbXBvcmFyeSBhcnJheSBlYWNoIHRpbWUgd2UgaGF2ZSB0byBvdXRwdXQgYSBjb2xsYXBzaW5nIGxpbmUuCisJICogQSBjb3B5IG9mIHRoZSBjb250ZW50cyBvZiB0aGUgbWFwcGluZyBhcnJheSBmcm9tIHRoZSBsYXN0IGNvbW1pdCwKKwkgKiB3aGljaCB3ZSB1c2UgdG8gaW1wcm92ZSB0aGUgZGlzcGxheSBvZiBjb2x1bW5zIHRoYXQgYXJlIHRyYWNraW5nCisJICogZnJvbSByaWdodCB0byBsZWZ0IHRocm91Z2ggYSBjb21taXQgbGluZS4gIFdlIGFsc28gdXNlIHRoaXMgdG8KKwkgKiBhdm9pZCBhbGxvY2F0aW5nIGEgZnJlc2ggYXJyYXkgd2hlbiB3ZSBjb21wdXRlIHRoZSBuZXh0IG1hcHBpbmcuCiAJICovCi0JaW50ICpuZXdfbWFwcGluZzsKKwlpbnQgKm9sZF9tYXBwaW5nOwogCS8qCiAJICogVGhlIGN1cnJlbnQgZGVmYXVsdCBjb2x1bW4gY29sb3IgYmVpbmcgdXNlZC4gIFRoaXMgaXMKIAkgKiBzdG9yZWQgYXMgYW4gaW5kZXggaW50byB0aGUgYXJyYXkgY29sdW1uX2NvbG9ycy4KQEAgLTI4NSw2ICszNjcsOSBAQAogCWdyYXBoLT5wcmV2X3N0YXRlID0gR1JBUEhfUEFERElORzsKIAlncmFwaC0+Y29tbWl0X2luZGV4ID0gMDsKIAlncmFwaC0+cHJldl9jb21taXRfaW5kZXggPSAwOworCWdyYXBoLT5tZXJnZV9sYXlvdXQgPSAwOworCWdyYXBoLT5lZGdlc19hZGRlZCA9IDA7CisJZ3JhcGgtPnByZXZfZWRnZXNfYWRkZWQgPSAwOwogCWdyYXBoLT5udW1fY29sdW1ucyA9IDA7CiAJZ3JhcGgtPm51bV9uZXdfY29sdW1ucyA9IDA7CiAJZ3JhcGgtPm1hcHBpbmdfc2l6ZSA9IDA7CkBAIC0zMDMsNyArMzg4LDcgQEAKIAlBTExPQ19BUlJBWShncmFwaC0+Y29sdW1ucywgZ3JhcGgtPmNvbHVtbl9jYXBhY2l0eSk7CiAJQUxMT0NfQVJSQVkoZ3JhcGgtPm5ld19jb2x1bW5zLCBncmFwaC0+Y29sdW1uX2NhcGFjaXR5KTsKIAlBTExPQ19BUlJBWShncmFwaC0+bWFwcGluZywgMiAqIGdyYXBoLT5jb2x1bW5fY2FwYWNpdHkpOwotCUFMTE9DX0FSUkFZKGdyYXBoLT5uZXdfbWFwcGluZywgMiAqIGdyYXBoLT5jb2x1bW5fY2FwYWNpdHkpOworCUFMTE9DX0FSUkFZKGdyYXBoLT5vbGRfbWFwcGluZywgMiAqIGdyYXBoLT5jb2x1bW5fY2FwYWNpdHkpOwogCiAJLyoKIAkgKiBUaGUgZGlmZiBvdXRwdXQgcHJlZml4IGNhbGxiYWNrLCB3aXRoIHRoaXMgd2UgY2FuIG1ha2UKQEAgLTMzMyw3ICs0MTgsNyBAQAogCVJFQUxMT0NfQVJSQVkoZ3JhcGgtPmNvbHVtbnMsIGdyYXBoLT5jb2x1bW5fY2FwYWNpdHkpOwogCVJFQUxMT0NfQVJSQVkoZ3JhcGgtPm5ld19jb2x1bW5zLCBncmFwaC0+Y29sdW1uX2NhcGFjaXR5KTsKIAlSRUFMTE9DX0FSUkFZKGdyYXBoLT5tYXBwaW5nLCBncmFwaC0+Y29sdW1uX2NhcGFjaXR5ICogMik7Ci0JUkVBTExPQ19BUlJBWShncmFwaC0+bmV3X21hcHBpbmcsIGdyYXBoLT5jb2x1bW5fY2FwYWNpdHkgKiAyKTsKKwlSRUFMTE9DX0FSUkFZKGdyYXBoLT5vbGRfbWFwcGluZywgZ3JhcGgtPmNvbHVtbl9jYXBhY2l0eSAqIDIpOwogfQogCiAvKgpAQCAtNDMyLDc0ICs1MTcsNzYgQEAKIAlyZXR1cm4gZ3JhcGhfZ2V0X2N1cnJlbnRfY29sdW1uX2NvbG9yKGdyYXBoKTsKIH0KIAotc3RhdGljIHZvaWQgZ3JhcGhfaW5zZXJ0X2ludG9fbmV3X2NvbHVtbnMoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsCi0JCQkJCSAgc3RydWN0IGNvbW1pdCAqY29tbWl0LAotCQkJCQkgIGludCAqbWFwcGluZ19pbmRleCkKK3N0YXRpYyBpbnQgZ3JhcGhfZmluZF9uZXdfY29sdW1uX2J5X2NvbW1pdChzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwKKwkJCQkJICAgc3RydWN0IGNvbW1pdCAqY29tbWl0KQogewogCWludCBpOwotCi0JLyoKLQkgKiBJZiB0aGUgY29tbWl0IGlzIGFscmVhZHkgaW4gdGhlIG5ld19jb2x1bW5zIGxpc3QsIHdlIGRvbid0IG5lZWQgdG8KLQkgKiBhZGQgaXQuICBKdXN0IHVwZGF0ZSB0aGUgbWFwcGluZyBjb3JyZWN0bHkuCi0JICovCiAJZm9yIChpID0gMDsgaSA8IGdyYXBoLT5udW1fbmV3X2NvbHVtbnM7IGkrKykgewotCQlpZiAoZ3JhcGgtPm5ld19jb2x1bW5zW2ldLmNvbW1pdCA9PSBjb21taXQpIHsKLQkJCWdyYXBoLT5tYXBwaW5nWyptYXBwaW5nX2luZGV4XSA9IGk7Ci0JCQkqbWFwcGluZ19pbmRleCArPSAyOwotCQkJcmV0dXJuOwotCQl9CisJCWlmIChncmFwaC0+bmV3X2NvbHVtbnNbaV0uY29tbWl0ID09IGNvbW1pdCkKKwkJCXJldHVybiBpOwogCX0KLQotCS8qCi0JICogVGhpcyBjb21taXQgaXNuJ3QgYWxyZWFkeSBpbiBuZXdfY29sdW1ucy4gIEFkZCBpdC4KLQkgKi8KLQlncmFwaC0+bmV3X2NvbHVtbnNbZ3JhcGgtPm51bV9uZXdfY29sdW1uc10uY29tbWl0ID0gY29tbWl0OwotCWdyYXBoLT5uZXdfY29sdW1uc1tncmFwaC0+bnVtX25ld19jb2x1bW5zXS5jb2xvciA9IGdyYXBoX2ZpbmRfY29tbWl0X2NvbG9yKGdyYXBoLCBjb21taXQpOwotCWdyYXBoLT5tYXBwaW5nWyptYXBwaW5nX2luZGV4XSA9IGdyYXBoLT5udW1fbmV3X2NvbHVtbnM7Ci0JKm1hcHBpbmdfaW5kZXggKz0gMjsKLQlncmFwaC0+bnVtX25ld19jb2x1bW5zKys7CisJcmV0dXJuIC0xOwogfQogCi1zdGF0aWMgdm9pZCBncmFwaF91cGRhdGVfd2lkdGgoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsCi0JCQkgICAgICAgaW50IGlzX2NvbW1pdF9pbl9leGlzdGluZ19jb2x1bW5zKQorc3RhdGljIHZvaWQgZ3JhcGhfaW5zZXJ0X2ludG9fbmV3X2NvbHVtbnMoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsCisJCQkJCSAgc3RydWN0IGNvbW1pdCAqY29tbWl0LAorCQkJCQkgIGludCBpZHgpCiB7Ci0JLyoKLQkgKiBDb21wdXRlIHRoZSB3aWR0aCBuZWVkZWQgdG8gZGlzcGxheSB0aGUgZ3JhcGggZm9yIHRoaXMgY29tbWl0LgotCSAqIFRoaXMgaXMgdGhlIG1heGltdW0gd2lkdGggbmVlZGVkIGZvciBhbnkgcm93LiAgQWxsIG90aGVyIHJvd3MKLQkgKiB3aWxsIGJlIHBhZGRlZCB0byB0aGlzIHdpZHRoLgotCSAqCi0JICogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4gdGhlIHdpZGVzdCByb3c6Ci0JICogQ291bnQgZWFjaCBleGlzdGluZyBjb2x1bW4gKGdyYXBoLT5udW1fY29sdW1ucyksIGFuZCBlYWNoIG5ldwotCSAqIGNvbHVtbiBhZGRlZCBieSB0aGlzIGNvbW1pdC4KLQkgKi8KLQlpbnQgbWF4X2NvbHMgPSBncmFwaC0+bnVtX2NvbHVtbnMgKyBncmFwaC0+bnVtX3BhcmVudHM7CisJaW50IGkgPSBncmFwaF9maW5kX25ld19jb2x1bW5fYnlfY29tbWl0KGdyYXBoLCBjb21taXQpOworCWludCBtYXBwaW5nX2lkeDsKIAogCS8qCi0JICogRXZlbiBpZiB0aGUgY3VycmVudCBjb21taXQgaGFzIG5vIHBhcmVudHMgdG8gYmUgcHJpbnRlZCwgaXQKLQkgKiBzdGlsbCB0YWtlcyB1cCBhIGNvbHVtbiBmb3IgaXRzZWxmLgorCSAqIElmIHRoZSBjb21taXQgaXMgbm90IGFscmVhZHkgaW4gdGhlIG5ld19jb2x1bW5zIGFycmF5LCB0aGVuIGFkZCBpdAorCSAqIGFuZCByZWNvcmQgaXQgYXMgYmVpbmcgaW4gdGhlIGZpbmFsIGNvbHVtbi4KIAkgKi8KLQlpZiAoZ3JhcGgtPm51bV9wYXJlbnRzIDwgMSkKLQkJbWF4X2NvbHMrKzsKKwlpZiAoaSA8IDApIHsKKwkJaSA9IGdyYXBoLT5udW1fbmV3X2NvbHVtbnMrKzsKKwkJZ3JhcGgtPm5ld19jb2x1bW5zW2ldLmNvbW1pdCA9IGNvbW1pdDsKKwkJZ3JhcGgtPm5ld19jb2x1bW5zW2ldLmNvbG9yID0gZ3JhcGhfZmluZF9jb21taXRfY29sb3IoZ3JhcGgsIGNvbW1pdCk7CisJfQogCi0JLyoKLQkgKiBXZSBhZGRlZCBhIGNvbHVtbiBmb3IgdGhlIGN1cnJlbnQgY29tbWl0IGFzIHBhcnQgb2YKLQkgKiBncmFwaC0+bnVtX3BhcmVudHMuICBJZiB0aGUgY3VycmVudCBjb21taXQgd2FzIGFscmVhZHkgaW4KLQkgKiBncmFwaC0+Y29sdW1ucywgdGhlbiB3ZSBoYXZlIGRvdWJsZSBjb3VudGVkIGl0LgotCSAqLwotCWlmIChpc19jb21taXRfaW5fZXhpc3RpbmdfY29sdW1ucykKLQkJbWF4X2NvbHMtLTsKKwlpZiAoZ3JhcGgtPm51bV9wYXJlbnRzID4gMSAmJiBpZHggPiAtMSAmJiBncmFwaC0+bWVyZ2VfbGF5b3V0ID09IC0xKSB7CisJCS8qCisJCSAqIElmIHRoaXMgaXMgdGhlIGZpcnN0IHBhcmVudCBvZiBhIG1lcmdlLCBjaG9vc2UgYSBsYXlvdXQgZm9yCisJCSAqIHRoZSBtZXJnZSBsaW5lIGJhc2VkIG9uIHdoZXRoZXIgdGhlIHBhcmVudCBhcHBlYXJzIGluIGEKKwkJICogY29sdW1uIHRvIHRoZSBsZWZ0IG9mIHRoZSBtZXJnZQorCQkgKi8KKwkJaW50IGRpc3QsIHNoaWZ0OwogCi0JLyoKLQkgKiBFYWNoIGNvbHVtbiB0YWtlcyB1cCAyIHNwYWNlcwotCSAqLwotCWdyYXBoLT53aWR0aCA9IG1heF9jb2xzICogMjsKKwkJZGlzdCA9IGlkeCAtIGk7CisJCXNoaWZ0ID0gKGRpc3QgPiAxKSA/IDIgKiBkaXN0IC0gMyA6IDE7CisKKwkJZ3JhcGgtPm1lcmdlX2xheW91dCA9IChkaXN0ID4gMCkgPyAwIDogMTsKKwkJZ3JhcGgtPmVkZ2VzX2FkZGVkID0gZ3JhcGgtPm51bV9wYXJlbnRzICsgZ3JhcGgtPm1lcmdlX2xheW91dCAgLSAyOworCisJCW1hcHBpbmdfaWR4ID0gZ3JhcGgtPndpZHRoICsgKGdyYXBoLT5tZXJnZV9sYXlvdXQgLSAxKSAqIHNoaWZ0OworCQlncmFwaC0+d2lkdGggKz0gMiAqIGdyYXBoLT5tZXJnZV9sYXlvdXQ7CisKKwl9IGVsc2UgaWYgKGdyYXBoLT5lZGdlc19hZGRlZCA+IDAgJiYgaSA9PSBncmFwaC0+bWFwcGluZ1tncmFwaC0+d2lkdGggLSAyXSkgeworCQkvKgorCQkgKiBJZiBzb21lIGNvbHVtbnMgaGF2ZSBiZWVuIGFkZGVkIGJ5IGEgbWVyZ2UsIGJ1dCB0aGlzIGNvbW1pdAorCQkgKiB3YXMgZm91bmQgaW4gdGhlIGxhc3QgZXhpc3RpbmcgY29sdW1uLCB0aGVuIGFkanVzdCB0aGUKKwkJICogbnVtYmVycyBzbyB0aGF0IHRoZSB0d28gZWRnZXMgaW1tZWRpYXRlbHkgam9pbiwgaS5lLjoKKwkJICoKKwkJICoJCSogfAkJKiB8CisJCSAqCQl8XCBcCT0+CXxcfAorCQkgKgkJfCB8LwkJfCAqCisJCSAqCQl8ICoKKwkJICovCisJCW1hcHBpbmdfaWR4ID0gZ3JhcGgtPndpZHRoIC0gMjsKKwkJZ3JhcGgtPmVkZ2VzX2FkZGVkID0gLTE7CisJfSBlbHNlIHsKKwkJbWFwcGluZ19pZHggPSBncmFwaC0+d2lkdGg7CisJCWdyYXBoLT53aWR0aCArPSAyOworCX0KKworCWdyYXBoLT5tYXBwaW5nW21hcHBpbmdfaWR4XSA9IGk7CiB9CiAKIHN0YXRpYyB2b2lkIGdyYXBoX3VwZGF0ZV9jb2x1bW5zKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQogewogCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50OwogCWludCBtYXhfbmV3X2NvbHVtbnM7Ci0JaW50IG1hcHBpbmdfaWR4OwogCWludCBpLCBzZWVuX3RoaXMsIGlzX2NvbW1pdF9pbl9jb2x1bW5zOwogCiAJLyoKQEAgLTUzMiw2ICs2MTksMTAgQEAKIAlmb3IgKGkgPSAwOyBpIDwgZ3JhcGgtPm1hcHBpbmdfc2l6ZTsgaSsrKQogCQlncmFwaC0+bWFwcGluZ1tpXSA9IC0xOwogCisJZ3JhcGgtPndpZHRoID0gMDsKKwlncmFwaC0+cHJldl9lZGdlc19hZGRlZCA9IGdyYXBoLT5lZGdlc19hZGRlZDsKKwlncmFwaC0+ZWRnZXNfYWRkZWQgPSAwOworCiAJLyoKIAkgKiBQb3B1bGF0ZSBncmFwaC0+bmV3X2NvbHVtbnMgYW5kIGdyYXBoLT5tYXBwaW5nCiAJICoKQEAgLTU0Miw3ICs2MzMsNiBAQAogCSAqIHN1cHBvc2VkIHRvIGVuZCB1cCBhZnRlciB0aGUgY29sbGFwc2luZyBpcyBwZXJmb3JtZWQuCiAJICovCiAJc2Vlbl90aGlzID0gMDsKLQltYXBwaW5nX2lkeCA9IDA7CiAJaXNfY29tbWl0X2luX2NvbHVtbnMgPSAxOwogCWZvciAoaSA9IDA7IGkgPD0gZ3JhcGgtPm51bV9jb2x1bW5zOyBpKyspIHsKIAkJc3RydWN0IGNvbW1pdCAqY29sX2NvbW1pdDsKQEAgLTU1Niw5ICs2NDYsOSBAQAogCQl9CiAKIAkJaWYgKGNvbF9jb21taXQgPT0gZ3JhcGgtPmNvbW1pdCkgewotCQkJaW50IG9sZF9tYXBwaW5nX2lkeCA9IG1hcHBpbmdfaWR4OwogCQkJc2Vlbl90aGlzID0gMTsKIAkJCWdyYXBoLT5jb21taXRfaW5kZXggPSBpOworCQkJZ3JhcGgtPm1lcmdlX2xheW91dCA9IC0xOwogCQkJZm9yIChwYXJlbnQgPSBmaXJzdF9pbnRlcmVzdGluZ19wYXJlbnQoZ3JhcGgpOwogCQkJICAgICBwYXJlbnQ7CiAJCQkgICAgIHBhcmVudCA9IG5leHRfaW50ZXJlc3RpbmdfcGFyZW50KGdyYXBoLCBwYXJlbnQpKSB7CkBAIC01NzEsMjEgKzY2MSwxOCBAQAogCQkJCSAgICAhaXNfY29tbWl0X2luX2NvbHVtbnMpIHsKIAkJCQkJZ3JhcGhfaW5jcmVtZW50X2NvbHVtbl9jb2xvcihncmFwaCk7CiAJCQkJfQotCQkJCWdyYXBoX2luc2VydF9pbnRvX25ld19jb2x1bW5zKGdyYXBoLAotCQkJCQkJCSAgICAgIHBhcmVudC0+aXRlbSwKLQkJCQkJCQkgICAgICAmbWFwcGluZ19pZHgpOworCQkJCWdyYXBoX2luc2VydF9pbnRvX25ld19jb2x1bW5zKGdyYXBoLCBwYXJlbnQtPml0ZW0sIGkpOwogCQkJfQogCQkJLyoKLQkJCSAqIFdlIGFsd2F5cyBuZWVkIHRvIGluY3JlbWVudCBtYXBwaW5nX2lkeCBieSBhdAorCQkJICogV2UgYWx3YXlzIG5lZWQgdG8gaW5jcmVtZW50IGdyYXBoLT53aWR0aCBieSBhdAogCQkJICogbGVhc3QgMiwgZXZlbiBpZiBpdCBoYXMgbm8gaW50ZXJlc3RpbmcgcGFyZW50cy4KIAkJCSAqIFRoZSBjdXJyZW50IGNvbW1pdCBhbHdheXMgdGFrZXMgdXAgYXQgbGVhc3QgMgogCQkJICogc3BhY2VzLgogCQkJICovCi0JCQlpZiAobWFwcGluZ19pZHggPT0gb2xkX21hcHBpbmdfaWR4KQotCQkJCW1hcHBpbmdfaWR4ICs9IDI7CisJCQlpZiAoZ3JhcGgtPm51bV9wYXJlbnRzID09IDApCisJCQkJZ3JhcGgtPndpZHRoICs9IDI7CiAJCX0gZWxzZSB7Ci0JCQlncmFwaF9pbnNlcnRfaW50b19uZXdfY29sdW1ucyhncmFwaCwgY29sX2NvbW1pdCwKLQkJCQkJCSAgICAgICZtYXBwaW5nX2lkeCk7CisJCQlncmFwaF9pbnNlcnRfaW50b19uZXdfY29sdW1ucyhncmFwaCwgY29sX2NvbW1pdCwgLTEpOwogCQl9CiAJfQogCkBAIC01OTUsMTEgKzY4Miw0MyBAQAogCXdoaWxlIChncmFwaC0+bWFwcGluZ19zaXplID4gMSAmJgogCSAgICAgICBncmFwaC0+bWFwcGluZ1tncmFwaC0+bWFwcGluZ19zaXplIC0gMV0gPCAwKQogCQlncmFwaC0+bWFwcGluZ19zaXplLS07Cit9CiAKK3N0YXRpYyBpbnQgZ3JhcGhfbnVtX2Rhc2hlZF9wYXJlbnRzKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoKQoreworCXJldHVybiBncmFwaC0+bnVtX3BhcmVudHMgKyBncmFwaC0+bWVyZ2VfbGF5b3V0IC0gMzsKK30KKworc3RhdGljIGludCBncmFwaF9udW1fZXhwYW5zaW9uX3Jvd3Moc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgpCit7CiAJLyoKLQkgKiBDb21wdXRlIGdyYXBoLT53aWR0aCBmb3IgdGhpcyBjb21taXQKKwkgKiBOb3JtYWxseSwgd2UgbmVlZCB0d28gZXhwYW5zaW9uIHJvd3MgZm9yIGVhY2ggZGFzaGVkIHBhcmVudCBsaW5lIGZyb20KKwkgKiBhbiBvY3RvcHVzIG1lcmdlOgorCSAqCisJICogCQl8ICoKKwkgKiAJCXwgfFwKKwkgKiAJCXwgfCBcCisJICogCQl8IHwgIFwKKwkgKiAJCXwgKi0uIFwKKwkgKiAJCXwgfFwgXCBcCisJICoKKwkgKiBJZiB0aGUgbWVyZ2UgaXMgc2tld2VkIHRvIHRoZSBsZWZ0LCB0aGVuIGl0cyBwYXJlbnRzIG9jY3VweSBvbmUgbGVzcworCSAqIGNvbHVtbiwgYW5kIHdlIGRvbid0IG5lZWQgYXMgbWFueSBleHBhbnNpb24gcm93cyB0byByb3V0ZSBhcm91bmQgaXQ7CisJICogaW4gc29tZSBjYXNlcyB0aGF0IG1lYW5zIHdlIGRvbid0IG5lZWQgYW55IGV4cGFuc2lvbiByb3dzIGF0IGFsbDoKKwkgKgorCSAqIAkJfCAqCisJICogCQl8IHxcCisJICogCQl8ICogXAorCSAqIAkJfC98XCBcCiAJICovCi0JZ3JhcGhfdXBkYXRlX3dpZHRoKGdyYXBoLCBpc19jb21taXRfaW5fY29sdW1ucyk7CisJcmV0dXJuIGdyYXBoX251bV9kYXNoZWRfcGFyZW50cyhncmFwaCkgKiAyOworfQorCitzdGF0aWMgaW50IGdyYXBoX25lZWRzX3ByZV9jb21taXRfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCkKK3sKKwlyZXR1cm4gZ3JhcGgtPm51bV9wYXJlbnRzID49IDMgJiYKKwkgICAgICAgZ3JhcGgtPmNvbW1pdF9pbmRleCA8IChncmFwaC0+bnVtX2NvbHVtbnMgLSAxKSAmJgorCSAgICAgICBncmFwaC0+ZXhwYW5zaW9uX3JvdyA8IGdyYXBoX251bV9leHBhbnNpb25fcm93cyhncmFwaCk7CiB9CiAKIHZvaWQgZ3JhcGhfdXBkYXRlKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3QgY29tbWl0ICpjb21taXQpCkBAIC02NTcsOCArNzc2LDcgQEAKIAkgKi8KIAlpZiAoZ3JhcGgtPnN0YXRlICE9IEdSQVBIX1BBRERJTkcpCiAJCWdyYXBoLT5zdGF0ZSA9IEdSQVBIX1NLSVA7Ci0JZWxzZSBpZiAoZ3JhcGgtPm51bV9wYXJlbnRzID49IDMgJiYKLQkJIGdyYXBoLT5jb21taXRfaW5kZXggPCAoZ3JhcGgtPm51bV9jb2x1bW5zIC0gMSkpCisJZWxzZSBpZiAoZ3JhcGhfbmVlZHNfcHJlX2NvbW1pdF9saW5lKGdyYXBoKSkKIAkJZ3JhcGgtPnN0YXRlID0gR1JBUEhfUFJFX0NPTU1JVDsKIAllbHNlCiAJCWdyYXBoLT5zdGF0ZSA9IEdSQVBIX0NPTU1JVDsKQEAgLTY4Niw4ICs4MDQsNyBAQAogCXJldHVybiAxOwogfQogCi1zdGF0aWMgdm9pZCBncmFwaF9wYWRfaG9yaXpvbnRhbGx5KHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYiwKLQkJCQkgICBpbnQgY2hhcnNfd3JpdHRlbikKK3N0YXRpYyB2b2lkIGdyYXBoX3BhZF9ob3Jpem9udGFsbHkoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBncmFwaF9saW5lICpsaW5lKQogewogCS8qCiAJICogQWRkIGFkZGl0aW9uYWwgc3BhY2VzIHRvIHRoZSBlbmQgb2YgdGhlIHN0cmJ1Ziwgc28gdGhhdCBhbGwKQEAgLTY5NiwzNCArODEzLDIyIEBACiAJICogVGhpcyB3YXksIGZpZWxkcyBwcmludGVkIHRvIHRoZSByaWdodCBvZiB0aGUgZ3JhcGggd2lsbCByZW1haW4KIAkgKiBhbGlnbmVkIGZvciB0aGUgZW50aXJlIGNvbW1pdC4KIAkgKi8KLQlpZiAoY2hhcnNfd3JpdHRlbiA8IGdyYXBoLT53aWR0aCkKLQkJc3RyYnVmX2FkZGNoYXJzKHNiLCAnICcsIGdyYXBoLT53aWR0aCAtIGNoYXJzX3dyaXR0ZW4pOworCWlmIChsaW5lLT53aWR0aCA8IGdyYXBoLT53aWR0aCkKKwkJZ3JhcGhfbGluZV9hZGRjaGFycyhsaW5lLCAnICcsIGdyYXBoLT53aWR0aCAtIGxpbmUtPndpZHRoKTsKIH0KIAogc3RhdGljIHZvaWQgZ3JhcGhfb3V0cHV0X3BhZGRpbmdfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwKLQkJCQkgICAgICBzdHJ1Y3Qgc3RyYnVmICpzYikKKwkJCQkgICAgICBzdHJ1Y3QgZ3JhcGhfbGluZSAqbGluZSkKIHsKIAlpbnQgaTsKIAogCS8qCi0JICogV2UgY291bGQgY29uY2VpdmFibGUgYmUgY2FsbGVkIHdpdGggYSBOVUxMIGNvbW1pdAotCSAqIGlmIG91ciBjYWxsZXIgaGFzIGEgYnVnLCBhbmQgaW52b2tlcyBncmFwaF9uZXh0X2xpbmUoKQotCSAqIGltbWVkaWF0ZWx5IGFmdGVyIGdyYXBoX2luaXQoKSwgd2l0aG91dCBmaXJzdCBjYWxsaW5nCi0JICogZ3JhcGhfdXBkYXRlKCkuICBSZXR1cm4gd2l0aG91dCBvdXRwdXR0aW5nIGFueXRoaW5nIGluIHRoaXMKLQkgKiBjYXNlLgotCSAqLwotCWlmICghZ3JhcGgtPmNvbW1pdCkKLQkJcmV0dXJuOwotCi0JLyoKIAkgKiBPdXRwdXQgYSBwYWRkaW5nIHJvdywgdGhhdCBsZWF2ZXMgYWxsIGJyYW5jaCBsaW5lcyB1bmNoYW5nZWQKIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZ3JhcGgtPm51bV9uZXdfY29sdW1uczsgaSsrKSB7Ci0JCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsICZncmFwaC0+bmV3X2NvbHVtbnNbaV0sICd8Jyk7Ci0JCXN0cmJ1Zl9hZGRjaChzYiwgJyAnKTsKKwkJZ3JhcGhfbGluZV93cml0ZV9jb2x1bW4obGluZSwgJmdyYXBoLT5uZXdfY29sdW1uc1tpXSwgJ3wnKTsKKwkJZ3JhcGhfbGluZV9hZGRjaChsaW5lLCAnICcpOwogCX0KLQotCWdyYXBoX3BhZF9ob3Jpem9udGFsbHkoZ3JhcGgsIHNiLCBncmFwaC0+bnVtX25ld19jb2x1bW5zICogMik7CiB9CiAKIApAQCAtNzMzLDI4ICs4MzgsMjQgQEAKIH0KIAogCi1zdGF0aWMgdm9pZCBncmFwaF9vdXRwdXRfc2tpcF9saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX291dHB1dF9za2lwX2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBncmFwaF9saW5lICpsaW5lKQogewogCS8qCiAJICogT3V0cHV0IGFuIGVsbGlwc2lzIHRvIGluZGljYXRlIHRoYXQgYSBwb3J0aW9uCiAJICogb2YgdGhlIGdyYXBoIGlzIG1pc3NpbmcuCiAJICovCi0Jc3RyYnVmX2FkZHN0cihzYiwgIi4uLiIpOwotCWdyYXBoX3BhZF9ob3Jpem9udGFsbHkoZ3JhcGgsIHNiLCAzKTsKKwlncmFwaF9saW5lX2FkZHN0cihsaW5lLCAiLi4uIik7CiAKLQlpZiAoZ3JhcGgtPm51bV9wYXJlbnRzID49IDMgJiYKLQkgICAgZ3JhcGgtPmNvbW1pdF9pbmRleCA8IChncmFwaC0+bnVtX2NvbHVtbnMgLSAxKSkKKwlpZiAoZ3JhcGhfbmVlZHNfcHJlX2NvbW1pdF9saW5lKGdyYXBoKSkKIAkJZ3JhcGhfdXBkYXRlX3N0YXRlKGdyYXBoLCBHUkFQSF9QUkVfQ09NTUlUKTsKIAllbHNlCiAJCWdyYXBoX3VwZGF0ZV9zdGF0ZShncmFwaCwgR1JBUEhfQ09NTUlUKTsKIH0KIAogc3RhdGljIHZvaWQgZ3JhcGhfb3V0cHV0X3ByZV9jb21taXRfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwKLQkJCQkJIHN0cnVjdCBzdHJidWYgKnNiKQorCQkJCQkgc3RydWN0IGdyYXBoX2xpbmUgKmxpbmUpCiB7Ci0JaW50IG51bV9leHBhbnNpb25fcm93czsKIAlpbnQgaSwgc2Vlbl90aGlzOwotCWludCBjaGFyc193cml0dGVuOwogCiAJLyoKIAkgKiBUaGlzIGZ1bmN0aW9uIGZvcm1hdHMgYSByb3cgdGhhdCBpbmNyZWFzZXMgdGhlIHNwYWNlIGFyb3VuZCBhIGNvbW1pdApAQCAtNzY0LDI3ICs4NjUsMjQgQEAKIAkgKiBXZSBuZWVkIDIgZXh0cmEgcm93cyBmb3IgZXZlcnkgcGFyZW50IG92ZXIgMi4KIAkgKi8KIAlhc3NlcnQoZ3JhcGgtPm51bV9wYXJlbnRzID49IDMpOwotCW51bV9leHBhbnNpb25fcm93cyA9IChncmFwaC0+bnVtX3BhcmVudHMgLSAyKSAqIDI7CiAKIAkvKgogCSAqIGdyYXBoLT5leHBhbnNpb25fcm93IHRyYWNrcyB0aGUgY3VycmVudCBleHBhbnNpb24gcm93IHdlIGFyZSBvbi4KIAkgKiBJdCBzaG91bGQgYmUgaW4gdGhlIHJhbmdlIFswLCBudW1fZXhwYW5zaW9uX3Jvd3MgLSAxXQogCSAqLwogCWFzc2VydCgwIDw9IGdyYXBoLT5leHBhbnNpb25fcm93ICYmCi0JICAgICAgIGdyYXBoLT5leHBhbnNpb25fcm93IDwgbnVtX2V4cGFuc2lvbl9yb3dzKTsKKwkgICAgICAgZ3JhcGgtPmV4cGFuc2lvbl9yb3cgPCBncmFwaF9udW1fZXhwYW5zaW9uX3Jvd3MoZ3JhcGgpKTsKIAogCS8qCiAJICogT3V0cHV0IHRoZSByb3cKIAkgKi8KIAlzZWVuX3RoaXMgPSAwOwotCWNoYXJzX3dyaXR0ZW4gPSAwOwogCWZvciAoaSA9IDA7IGkgPCBncmFwaC0+bnVtX2NvbHVtbnM7IGkrKykgewogCQlzdHJ1Y3QgY29sdW1uICpjb2wgPSAmZ3JhcGgtPmNvbHVtbnNbaV07CiAJCWlmIChjb2wtPmNvbW1pdCA9PSBncmFwaC0+Y29tbWl0KSB7CiAJCQlzZWVuX3RoaXMgPSAxOwotCQkJc3RyYnVmX3dyaXRlX2NvbHVtbihzYiwgY29sLCAnfCcpOwotCQkJc3RyYnVmX2FkZGNoYXJzKHNiLCAnICcsIGdyYXBoLT5leHBhbnNpb25fcm93KTsKLQkJCWNoYXJzX3dyaXR0ZW4gKz0gMSArIGdyYXBoLT5leHBhbnNpb25fcm93OworCQkJZ3JhcGhfbGluZV93cml0ZV9jb2x1bW4obGluZSwgY29sLCAnfCcpOworCQkJZ3JhcGhfbGluZV9hZGRjaGFycyhsaW5lLCAnICcsIGdyYXBoLT5leHBhbnNpb25fcm93KTsKIAkJfSBlbHNlIGlmIChzZWVuX3RoaXMgJiYgKGdyYXBoLT5leHBhbnNpb25fcm93ID09IDApKSB7CiAJCQkvKgogCQkJICogVGhpcyBpcyB0aGUgZmlyc3QgbGluZSBvZiB0aGUgcHJlLWNvbW1pdCBvdXRwdXQuCkBAIC03OTcsMzMgKzg5NSwyNyBAQAogCQkJICovCiAJCQlpZiAoZ3JhcGgtPnByZXZfc3RhdGUgPT0gR1JBUEhfUE9TVF9NRVJHRSAmJgogCQkJICAgIGdyYXBoLT5wcmV2X2NvbW1pdF9pbmRleCA8IGkpCi0JCQkJc3RyYnVmX3dyaXRlX2NvbHVtbihzYiwgY29sLCAnXFwnKTsKKwkJCQlncmFwaF9saW5lX3dyaXRlX2NvbHVtbihsaW5lLCBjb2wsICdcXCcpOwogCQkJZWxzZQotCQkJCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsIGNvbCwgJ3wnKTsKLQkJCWNoYXJzX3dyaXR0ZW4rKzsKKwkJCQlncmFwaF9saW5lX3dyaXRlX2NvbHVtbihsaW5lLCBjb2wsICd8Jyk7CiAJCX0gZWxzZSBpZiAoc2Vlbl90aGlzICYmIChncmFwaC0+ZXhwYW5zaW9uX3JvdyA+IDApKSB7Ci0JCQlzdHJidWZfd3JpdGVfY29sdW1uKHNiLCBjb2wsICdcXCcpOwotCQkJY2hhcnNfd3JpdHRlbisrOworCQkJZ3JhcGhfbGluZV93cml0ZV9jb2x1bW4obGluZSwgY29sLCAnXFwnKTsKIAkJfSBlbHNlIHsKLQkJCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsIGNvbCwgJ3wnKTsKLQkJCWNoYXJzX3dyaXR0ZW4rKzsKKwkJCWdyYXBoX2xpbmVfd3JpdGVfY29sdW1uKGxpbmUsIGNvbCwgJ3wnKTsKIAkJfQotCQlzdHJidWZfYWRkY2goc2IsICcgJyk7Ci0JCWNoYXJzX3dyaXR0ZW4rKzsKKwkJZ3JhcGhfbGluZV9hZGRjaChsaW5lLCAnICcpOwogCX0KIAotCWdyYXBoX3BhZF9ob3Jpem9udGFsbHkoZ3JhcGgsIHNiLCBjaGFyc193cml0dGVuKTsKLQogCS8qCiAJICogSW5jcmVtZW50IGdyYXBoLT5leHBhbnNpb25fcm93LAogCSAqIGFuZCBtb3ZlIHRvIHN0YXRlIEdSQVBIX0NPTU1JVCBpZiBuZWNlc3NhcnkKIAkgKi8KIAlncmFwaC0+ZXhwYW5zaW9uX3JvdysrOwotCWlmIChncmFwaC0+ZXhwYW5zaW9uX3JvdyA+PSBudW1fZXhwYW5zaW9uX3Jvd3MpCisJaWYgKCFncmFwaF9uZWVkc19wcmVfY29tbWl0X2xpbmUoZ3JhcGgpKQogCQlncmFwaF91cGRhdGVfc3RhdGUoZ3JhcGgsIEdSQVBIX0NPTU1JVCk7CiB9CiAKLXN0YXRpYyB2b2lkIGdyYXBoX291dHB1dF9jb21taXRfY2hhcihzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpCitzdGF0aWMgdm9pZCBncmFwaF9vdXRwdXRfY29tbWl0X2NoYXIoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBncmFwaF9saW5lICpsaW5lKQogewogCS8qCiAJICogRm9yIGJvdW5kYXJ5IGNvbW1pdHMsIHByaW50ICdvJwpAQCAtODMxLDcyICs5MjMsNjcgQEAKIAkgKi8KIAlpZiAoZ3JhcGgtPmNvbW1pdC0+b2JqZWN0LmZsYWdzICYgQk9VTkRBUlkpIHsKIAkJYXNzZXJ0KGdyYXBoLT5yZXZzLT5ib3VuZGFyeSk7Ci0JCXN0cmJ1Zl9hZGRjaChzYiwgJ28nKTsKKwkJZ3JhcGhfbGluZV9hZGRjaChsaW5lLCAnbycpOwogCQlyZXR1cm47CiAJfQogCiAJLyoKIAkgKiBnZXRfcmV2aXNpb25fbWFyaygpIGhhbmRsZXMgYWxsIG90aGVyIGNhc2VzIHdpdGhvdXQgYXNzZXJ0KCkKIAkgKi8KLQlzdHJidWZfYWRkc3RyKHNiLCBnZXRfcmV2aXNpb25fbWFyayhncmFwaC0+cmV2cywgZ3JhcGgtPmNvbW1pdCkpOworCWdyYXBoX2xpbmVfYWRkc3RyKGxpbmUsIGdldF9yZXZpc2lvbl9tYXJrKGdyYXBoLT5yZXZzLCBncmFwaC0+Y29tbWl0KSk7CiB9CiAKIC8qCi0gKiBEcmF3IHRoZSBob3Jpem9udGFsIGRhc2hlcyBvZiBhbiBvY3RvcHVzIG1lcmdlIGFuZCByZXR1cm4gdGhlIG51bWJlciBvZgotICogY2hhcmFjdGVycyB3cml0dGVuLgorICogRHJhdyB0aGUgaG9yaXpvbnRhbCBkYXNoZXMgb2YgYW4gb2N0b3B1cyBtZXJnZS4KICAqLwotc3RhdGljIGludCBncmFwaF9kcmF3X29jdG9wdXNfbWVyZ2Uoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsCi0JCQkJICAgIHN0cnVjdCBzdHJidWYgKnNiKQorc3RhdGljIHZvaWQgZ3JhcGhfZHJhd19vY3RvcHVzX21lcmdlKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3QgZ3JhcGhfbGluZSAqbGluZSkKIHsKIAkvKgotCSAqIEhlcmUgZGFzaGxlc3NfcGFyZW50cyByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgcGFyZW50cyB3aGljaCBkb24ndAotCSAqIG5lZWQgdG8gaGF2ZSBkYXNoZXMgKHRoZSBlZGdlcyBsYWJlbGVkICIwIiBhbmQgIjEiKS4gIEFuZAotCSAqIGRhc2hmdWxfcGFyZW50cyBhcmUgdGhlIHJlbWFpbmluZyBvbmVzLgorCSAqIFRoZSBwYXJlbnRzIG9mIGEgbWVyZ2UgY29tbWl0IGNhbiBiZSBhcmJpdHJhcmlseSByZW9yZGVyZWQgYXMgdGhleQorCSAqIGFyZSBtYXBwZWQgb250byBkaXNwbGF5IGNvbHVtbnMsIGZvciBleGFtcGxlIHRoaXMgaXMgYSB2YWxpZCBtZXJnZToKIAkgKgotCSAqIHwgKi0tLS4KLQkgKiB8IHxcIFwgXAotCSAqIHwgfCB8IHwgfAotCSAqIHggMCAxIDIgMworCSAqCXwgfCAqLS0tLgorCSAqCXwgfCB8XCBcIFwKKwkgKgl8IHwgfC8gLyAvCisJICoJfCB8L3wgfCAvCisJICoJfCB8X3xffC8KKwkgKgl8L3wgfCB8CisJICoJMyAxIDAgMgogCSAqCisJICogVGhlIG51bWJlcnMgZGVub3RlIHdoaWNoIHBhcmVudCBvZiB0aGUgbWVyZ2UgZWFjaCB2aXN1YWwgY29sdW1uCisJICogY29ycmVzcG9uZHMgdG87IHdlIGNhbid0IGFzc3VtZSB0aGF0IHRoZSBwYXJlbnRzIHdpbGwgaW5pdGlhbGx5CisJICogZGlzcGxheSBpbiB0aGUgb3JkZXIgZ2l2ZW4gYnkgbmV3X2NvbHVtbnMuCisJICoKKwkgKiBUbyBmaW5kIHRoZSByaWdodCBjb2xvciBmb3IgZWFjaCBkYXNoLCB3ZSBuZWVkIHRvIGNvbnN1bHQgdGhlCisJICogbWFwcGluZyBhcnJheSwgc3RhcnRpbmcgZnJvbSB0aGUgY29sdW1uIDIgcGxhY2VzIHRvIHRoZSByaWdodCBvZiB0aGUKKwkgKiBtZXJnZSBjb21taXQsIGFuZCB1c2UgdGhhdCB0byBmaW5kIG91dCB3aGljaCBsb2dpY2FsIGNvbHVtbiBlYWNoCisJICogZWRnZSB3aWxsIGNvbGxhcHNlIHRvLgorCSAqCisJICogQ29tbWl0cyBhcmUgcmVuZGVyZWQgb25jZSBhbGwgZWRnZXMgaGF2ZSBjb2xsYXBzZWQgdG8gdGhlaXIgY29ycmVjdAorCSAqIGxvZ2NpYWwgY29sdW1uLCBzbyBjb21taXRfaW5kZXggZ2l2ZXMgdXMgdGhlIHJpZ2h0IHZpc3VhbCBvZmZzZXQgZm9yCisJICogdGhlIG1lcmdlIGNvbW1pdC4KIAkgKi8KLQljb25zdCBpbnQgZGFzaGxlc3NfcGFyZW50cyA9IDI7Ci0JaW50IGRhc2hmdWxfcGFyZW50cyA9IGdyYXBoLT5udW1fcGFyZW50cyAtIGRhc2hsZXNzX3BhcmVudHM7CiAKLQkvKgotCSAqIFVzdWFsbHksIHdlIGFkZCBvbmUgbmV3IGNvbHVtbiBmb3IgZWFjaCBwYXJlbnQgKGxpa2UgdGhlIGRpYWdyYW0KLQkgKiBhYm92ZSkgYnV0IHNvbWV0aW1lcyB0aGUgZmlyc3QgcGFyZW50IGdvZXMgaW50byBhbiBleGlzdGluZyBjb2x1bW4sCi0JICogbGlrZSB0aGlzOgotCSAqCi0JICogfCAqLS0tLgotCSAqIHwgfFwgXCBcCi0JICogfC8gLyAvIC8KLQkgKiB4IDAgMSAyCi0JICoKLQkgKiBJbiB3aGljaCBjYXNlIHRoZSBudW1iZXIgb2YgcGFyZW50cyB3aWxsIGJlIG9uZSBncmVhdGVyIHRoYW4gdGhlCi0JICogbnVtYmVyIG9mIGFkZGVkIGNvbHVtbnMuCi0JICovCi0JaW50IGFkZGVkX2NvbHMgPSAoZ3JhcGgtPm51bV9uZXdfY29sdW1ucyAtIGdyYXBoLT5udW1fY29sdW1ucyk7Ci0JaW50IHBhcmVudF9pbl9vbGRfY29scyA9IGdyYXBoLT5udW1fcGFyZW50cyAtIGFkZGVkX2NvbHM7CisJaW50IGksIGo7CisJc3RydWN0IGNvbHVtbiAqY29sOwogCi0JLyoKLQkgKiBJbiBib3RoIGNhc2VzLCBjb21taXRfaW5kZXggY29ycmVzcG9uZHMgdG8gdGhlIGVkZ2UgbGFiZWxlZCAiMCIuCi0JICovCi0JaW50IGZpcnN0X2NvbCA9IGdyYXBoLT5jb21taXRfaW5kZXggKyBkYXNobGVzc19wYXJlbnRzCi0JICAgIC0gcGFyZW50X2luX29sZF9jb2xzOworCWludCBkYXNoZWRfcGFyZW50cyA9IGdyYXBoX251bV9kYXNoZWRfcGFyZW50cyhncmFwaCk7CiAKLQlpbnQgaTsKLQlmb3IgKGkgPSAwOyBpIDwgZGFzaGZ1bF9wYXJlbnRzOyBpKyspIHsKLQkJc3RyYnVmX3dyaXRlX2NvbHVtbihzYiwgJmdyYXBoLT5uZXdfY29sdW1uc1tpK2ZpcnN0X2NvbF0sICctJyk7Ci0JCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsICZncmFwaC0+bmV3X2NvbHVtbnNbaStmaXJzdF9jb2xdLAotCQkJCSAgICBpID09IGRhc2hmdWxfcGFyZW50cy0xID8gJy4nIDogJy0nKTsKKwlmb3IgKGkgPSAwOyBpIDwgZGFzaGVkX3BhcmVudHM7IGkrKykgeworCQlqID0gZ3JhcGgtPm1hcHBpbmdbKGdyYXBoLT5jb21taXRfaW5kZXggKyBpICsgMikgKiAyXTsKKwkJY29sID0gJmdyYXBoLT5uZXdfY29sdW1uc1tqXTsKKworCQlncmFwaF9saW5lX3dyaXRlX2NvbHVtbihsaW5lLCBjb2wsICctJyk7CisJCWdyYXBoX2xpbmVfd3JpdGVfY29sdW1uKGxpbmUsIGNvbCwgKGkgPT0gZGFzaGVkX3BhcmVudHMgLSAxKSA/ICcuJyA6ICctJyk7CiAJfQotCXJldHVybiAyICogZGFzaGZ1bF9wYXJlbnRzOworCisJcmV0dXJuOwogfQogCi1zdGF0aWMgdm9pZCBncmFwaF9vdXRwdXRfY29tbWl0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKQorc3RhdGljIHZvaWQgZ3JhcGhfb3V0cHV0X2NvbW1pdF9saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3QgZ3JhcGhfbGluZSAqbGluZSkKIHsKIAlpbnQgc2Vlbl90aGlzID0gMDsKLQlpbnQgaSwgY2hhcnNfd3JpdHRlbjsKKwlpbnQgaTsKIAogCS8qCiAJICogT3V0cHV0IHRoZSByb3cgY29udGFpbmluZyB0aGlzIGNvbW1pdApAQCAtOTA2LDcgKzk5Myw2IEBACiAJICogY2hpbGRyZW4gdGhhdCB3ZSBoYXZlIGFscmVhZHkgcHJvY2Vzc2VkLikKIAkgKi8KIAlzZWVuX3RoaXMgPSAwOwotCWNoYXJzX3dyaXR0ZW4gPSAwOwogCWZvciAoaSA9IDA7IGkgPD0gZ3JhcGgtPm51bV9jb2x1bW5zOyBpKyspIHsKIAkJc3RydWN0IGNvbHVtbiAqY29sID0gJmdyYXBoLT5jb2x1bW5zW2ldOwogCQlzdHJ1Y3QgY29tbWl0ICpjb2xfY29tbWl0OwpAQCAtOTIwLDE5ICsxMDA2LDE3IEBACiAKIAkJaWYgKGNvbF9jb21taXQgPT0gZ3JhcGgtPmNvbW1pdCkgewogCQkJc2Vlbl90aGlzID0gMTsKLQkJCWdyYXBoX291dHB1dF9jb21taXRfY2hhcihncmFwaCwgc2IpOwotCQkJY2hhcnNfd3JpdHRlbisrOworCQkJZ3JhcGhfb3V0cHV0X2NvbW1pdF9jaGFyKGdyYXBoLCBsaW5lKTsKIAogCQkJaWYgKGdyYXBoLT5udW1fcGFyZW50cyA+IDIpCi0JCQkJY2hhcnNfd3JpdHRlbiArPSBncmFwaF9kcmF3X29jdG9wdXNfbWVyZ2UoZ3JhcGgsCi0JCQkJCQkJCQkgIHNiKTsKLQkJfSBlbHNlIGlmIChzZWVuX3RoaXMgJiYgKGdyYXBoLT5udW1fcGFyZW50cyA+IDIpKSB7Ci0JCQlzdHJidWZfd3JpdGVfY29sdW1uKHNiLCBjb2wsICdcXCcpOwotCQkJY2hhcnNfd3JpdHRlbisrOwotCQl9IGVsc2UgaWYgKHNlZW5fdGhpcyAmJiAoZ3JhcGgtPm51bV9wYXJlbnRzID09IDIpKSB7CisJCQkJZ3JhcGhfZHJhd19vY3RvcHVzX21lcmdlKGdyYXBoLCBsaW5lKTsKKwkJfSBlbHNlIGlmIChzZWVuX3RoaXMgJiYgKGdyYXBoLT5lZGdlc19hZGRlZCA+IDEpKSB7CisJCQlncmFwaF9saW5lX3dyaXRlX2NvbHVtbihsaW5lLCBjb2wsICdcXCcpOworCQl9IGVsc2UgaWYgKHNlZW5fdGhpcyAmJiAoZ3JhcGgtPmVkZ2VzX2FkZGVkID09IDEpKSB7CiAJCQkvKgotCQkJICogVGhpcyBpcyBhIDItd2F5IG1lcmdlIGNvbW1pdC4KLQkJCSAqIFRoZXJlIGlzIG5vIEdSQVBIX1BSRV9DT01NSVQgc3RhZ2UgZm9yIDItd2F5CisJCQkgKiBUaGlzIGlzIGVpdGhlciBhIHJpZ2h0LXNrZXdlZCAyLXdheSBtZXJnZQorCQkJICogY29tbWl0LCBvciBhIGxlZnQtc2tld2VkIDMtd2F5IG1lcmdlLgorCQkJICogVGhlcmUgaXMgbm8gR1JBUEhfUFJFX0NPTU1JVCBzdGFnZSBmb3Igc3VjaAogCQkJICogbWVyZ2VzLCBzbyB0aGlzIGlzIHRoZSBmaXJzdCBsaW5lIG9mIG91dHB1dAogCQkJICogZm9yIHRoaXMgY29tbWl0LiAgQ2hlY2sgdG8gc2VlIHdoYXQgdGhlIHByZXZpb3VzCiAJCQkgKiBsaW5lIG9mIG91dHB1dCB3YXMuCkBAIC05NDQsMjEgKzEwMjgsMjEgQEAKIAkJCSAqIG1ha2VzIHRoZSBvdXRwdXQgbG9vayBuaWNlci4KIAkJCSAqLwogCQkJaWYgKGdyYXBoLT5wcmV2X3N0YXRlID09IEdSQVBIX1BPU1RfTUVSR0UgJiYKKwkJCSAgICBncmFwaC0+cHJldl9lZGdlc19hZGRlZCA+IDAgJiYKIAkJCSAgICBncmFwaC0+cHJldl9jb21taXRfaW5kZXggPCBpKQotCQkJCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsIGNvbCwgJ1xcJyk7CisJCQkJZ3JhcGhfbGluZV93cml0ZV9jb2x1bW4obGluZSwgY29sLCAnXFwnKTsKIAkJCWVsc2UKLQkJCQlzdHJidWZfd3JpdGVfY29sdW1uKHNiLCBjb2wsICd8Jyk7Ci0JCQljaGFyc193cml0dGVuKys7CisJCQkJZ3JhcGhfbGluZV93cml0ZV9jb2x1bW4obGluZSwgY29sLCAnfCcpOworCQl9IGVsc2UgaWYgKGdyYXBoLT5wcmV2X3N0YXRlID09IEdSQVBIX0NPTExBUFNJTkcgJiYKKwkJCSAgIGdyYXBoLT5vbGRfbWFwcGluZ1syICogaSArIDFdID09IGkgJiYKKwkJCSAgIGdyYXBoLT5tYXBwaW5nWzIgKiBpXSA8IGkpIHsKKwkJCWdyYXBoX2xpbmVfd3JpdGVfY29sdW1uKGxpbmUsIGNvbCwgJy8nKTsKIAkJfSBlbHNlIHsKLQkJCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsIGNvbCwgJ3wnKTsKLQkJCWNoYXJzX3dyaXR0ZW4rKzsKKwkJCWdyYXBoX2xpbmVfd3JpdGVfY29sdW1uKGxpbmUsIGNvbCwgJ3wnKTsKIAkJfQotCQlzdHJidWZfYWRkY2goc2IsICcgJyk7Ci0JCWNoYXJzX3dyaXR0ZW4rKzsKKwkJZ3JhcGhfbGluZV9hZGRjaChsaW5lLCAnICcpOwogCX0KIAotCWdyYXBoX3BhZF9ob3Jpem9udGFsbHkoZ3JhcGgsIHNiLCBjaGFyc193cml0dGVuKTsKLQogCS8qCiAJICogVXBkYXRlIGdyYXBoLT5zdGF0ZQogCSAqLwpAQCAtOTcwLDI2ICsxMDU0LDE5IEBACiAJCWdyYXBoX3VwZGF0ZV9zdGF0ZShncmFwaCwgR1JBUEhfQ09MTEFQU0lORyk7CiB9CiAKLXN0YXRpYyBzdHJ1Y3QgY29sdW1uICpmaW5kX25ld19jb2x1bW5fYnlfY29tbWl0KHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLAotCQkJCQkJc3RydWN0IGNvbW1pdCAqY29tbWl0KQotewotCWludCBpOwotCWZvciAoaSA9IDA7IGkgPCBncmFwaC0+bnVtX25ld19jb2x1bW5zOyBpKyspIHsKLQkJaWYgKGdyYXBoLT5uZXdfY29sdW1uc1tpXS5jb21taXQgPT0gY29tbWl0KQotCQkJcmV0dXJuICZncmFwaC0+bmV3X2NvbHVtbnNbaV07Ci0JfQotCXJldHVybiBOVUxMOwotfQorY29uc3QgY2hhciBtZXJnZV9jaGFyc1tdID0geycvJywgJ3wnLCAnXFwnfTsKIAotc3RhdGljIHZvaWQgZ3JhcGhfb3V0cHV0X3Bvc3RfbWVyZ2VfbGluZShzdHJ1Y3QgZ2l0X2dyYXBoICpncmFwaCwgc3RydWN0IHN0cmJ1ZiAqc2IpCitzdGF0aWMgdm9pZCBncmFwaF9vdXRwdXRfcG9zdF9tZXJnZV9saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3QgZ3JhcGhfbGluZSAqbGluZSkKIHsKIAlpbnQgc2Vlbl90aGlzID0gMDsKLQlpbnQgaSwgaiwgY2hhcnNfd3JpdHRlbjsKKwlpbnQgaSwgajsKKworCXN0cnVjdCBjb21taXRfbGlzdCAqZmlyc3RfcGFyZW50ID0gZmlyc3RfaW50ZXJlc3RpbmdfcGFyZW50KGdyYXBoKTsKKwlpbnQgc2Vlbl9wYXJlbnQgPSAwOwogCiAJLyoKIAkgKiBPdXRwdXQgdGhlIHBvc3QtbWVyZ2Ugcm93CiAJICovCi0JY2hhcnNfd3JpdHRlbiA9IDA7CiAJZm9yIChpID0gMDsgaSA8PSBncmFwaC0+bnVtX2NvbHVtbnM7IGkrKykgewogCQlzdHJ1Y3QgY29sdW1uICpjb2wgPSAmZ3JhcGgtPmNvbHVtbnNbaV07CiAJCXN0cnVjdCBjb21taXQgKmNvbF9jb21taXQ7CkBAIC0xMDA4LDM3ICsxMDg1LDQ0IEBACiAJCQkgKiBuZXdfY29sdW1ucyBhbmQgdXNlIHRob3NlIHRvIGZvcm1hdCB0aGUKIAkJCSAqIGVkZ2VzLgogCQkJICovCi0JCQlzdHJ1Y3QgY29tbWl0X2xpc3QgKnBhcmVudHMgPSBOVUxMOwotCQkJc3RydWN0IGNvbHVtbiAqcGFyX2NvbHVtbjsKKwkJCXN0cnVjdCBjb21taXRfbGlzdCAqcGFyZW50cyA9IGZpcnN0X3BhcmVudDsKKwkJCWludCBwYXJfY29sdW1uOworCQkJaW50IGlkeCA9IGdyYXBoLT5tZXJnZV9sYXlvdXQ7CisJCQljaGFyIGM7CiAJCQlzZWVuX3RoaXMgPSAxOwotCQkJcGFyZW50cyA9IGZpcnN0X2ludGVyZXN0aW5nX3BhcmVudChncmFwaCk7Ci0JCQlhc3NlcnQocGFyZW50cyk7Ci0JCQlwYXJfY29sdW1uID0gZmluZF9uZXdfY29sdW1uX2J5X2NvbW1pdChncmFwaCwgcGFyZW50cy0+aXRlbSk7Ci0JCQlhc3NlcnQocGFyX2NvbHVtbik7CiAKLQkJCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsIHBhcl9jb2x1bW4sICd8Jyk7Ci0JCQljaGFyc193cml0dGVuKys7Ci0JCQlmb3IgKGogPSAwOyBqIDwgZ3JhcGgtPm51bV9wYXJlbnRzIC0gMTsgaisrKSB7CisJCQlmb3IgKGogPSAwOyBqIDwgZ3JhcGgtPm51bV9wYXJlbnRzOyBqKyspIHsKKwkJCQlwYXJfY29sdW1uID0gZ3JhcGhfZmluZF9uZXdfY29sdW1uX2J5X2NvbW1pdChncmFwaCwgcGFyZW50cy0+aXRlbSk7CisJCQkJYXNzZXJ0KHBhcl9jb2x1bW4gPj0gMCk7CisKKwkJCQljID0gbWVyZ2VfY2hhcnNbaWR4XTsKKwkJCQlncmFwaF9saW5lX3dyaXRlX2NvbHVtbihsaW5lLCAmZ3JhcGgtPm5ld19jb2x1bW5zW3Bhcl9jb2x1bW5dLCBjKTsKKwkJCQlpZiAoaWR4ID09IDIpIHsKKwkJCQkJaWYgKGdyYXBoLT5lZGdlc19hZGRlZCA+IDAgfHwgaiA8IGdyYXBoLT5udW1fcGFyZW50cyAtIDEpCisJCQkJCQlncmFwaF9saW5lX2FkZGNoKGxpbmUsICcgJyk7CisJCQkJfSBlbHNlIHsKKwkJCQkJaWR4Kys7CisJCQkJfQogCQkJCXBhcmVudHMgPSBuZXh0X2ludGVyZXN0aW5nX3BhcmVudChncmFwaCwgcGFyZW50cyk7Ci0JCQkJYXNzZXJ0KHBhcmVudHMpOwotCQkJCXBhcl9jb2x1bW4gPSBmaW5kX25ld19jb2x1bW5fYnlfY29tbWl0KGdyYXBoLCBwYXJlbnRzLT5pdGVtKTsKLQkJCQlhc3NlcnQocGFyX2NvbHVtbik7Ci0JCQkJc3RyYnVmX3dyaXRlX2NvbHVtbihzYiwgcGFyX2NvbHVtbiwgJ1xcJyk7Ci0JCQkJc3RyYnVmX2FkZGNoKHNiLCAnICcpOwogCQkJfQotCQkJY2hhcnNfd3JpdHRlbiArPSBqICogMjsKLQkJfSBlbHNlIGlmIChzZWVuX3RoaXMpIHsKLQkJCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsIGNvbCwgJ1xcJyk7Ci0JCQlzdHJidWZfYWRkY2goc2IsICcgJyk7Ci0JCQljaGFyc193cml0dGVuICs9IDI7Ci0JCX0gZWxzZSB7Ci0JCQlzdHJidWZfd3JpdGVfY29sdW1uKHNiLCBjb2wsICd8Jyk7Ci0JCQlzdHJidWZfYWRkY2goc2IsICcgJyk7Ci0JCQljaGFyc193cml0dGVuICs9IDI7Ci0JCX0KLQl9CisJCQlpZiAoZ3JhcGgtPmVkZ2VzX2FkZGVkID09IDApCisJCQkJZ3JhcGhfbGluZV9hZGRjaChsaW5lLCAnICcpOwogCi0JZ3JhcGhfcGFkX2hvcml6b250YWxseShncmFwaCwgc2IsIGNoYXJzX3dyaXR0ZW4pOworCQl9IGVsc2UgaWYgKHNlZW5fdGhpcykgeworCQkJaWYgKGdyYXBoLT5lZGdlc19hZGRlZCA+IDApCisJCQkJZ3JhcGhfbGluZV93cml0ZV9jb2x1bW4obGluZSwgY29sLCAnXFwnKTsKKwkJCWVsc2UKKwkJCQlncmFwaF9saW5lX3dyaXRlX2NvbHVtbihsaW5lLCBjb2wsICd8Jyk7CisJCQlncmFwaF9saW5lX2FkZGNoKGxpbmUsICcgJyk7CisJCX0gZWxzZSB7CisJCQlncmFwaF9saW5lX3dyaXRlX2NvbHVtbihsaW5lLCBjb2wsICd8Jyk7CisJCQlpZiAoZ3JhcGgtPm1lcmdlX2xheW91dCAhPSAwIHx8IGkgIT0gZ3JhcGgtPmNvbW1pdF9pbmRleCAtIDEpCisJCQkJZ3JhcGhfbGluZV9hZGRjaChsaW5lLCBzZWVuX3BhcmVudCA/ICdfJyA6ICcgJyk7CisJCX0KKworCQlpZiAoY29sX2NvbW1pdCA9PSBmaXJzdF9wYXJlbnQtPml0ZW0pCisJCQlzZWVuX3BhcmVudCA9IDE7CisJfQogCiAJLyoKIAkgKiBVcGRhdGUgZ3JhcGgtPnN0YXRlCkBAIC0xMDQ5LDcgKzExMzMsNyBAQAogCQlncmFwaF91cGRhdGVfc3RhdGUoZ3JhcGgsIEdSQVBIX0NPTExBUFNJTkcpOwogfQogCi1zdGF0aWMgdm9pZCBncmFwaF9vdXRwdXRfY29sbGFwc2luZ19saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKK3N0YXRpYyB2b2lkIGdyYXBoX291dHB1dF9jb2xsYXBzaW5nX2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBncmFwaF9saW5lICpsaW5lKQogewogCWludCBpOwogCXNob3J0IHVzZWRfaG9yaXpvbnRhbCA9IDA7CkBAIC0xMDU3LDEzICsxMTQxLDE4IEBACiAJaW50IGhvcml6b250YWxfZWRnZV90YXJnZXQgPSAtMTsKIAogCS8qCi0JICogQ2xlYXIgb3V0IHRoZSBuZXdfbWFwcGluZyBhcnJheQorCSAqIFN3YXAgdGhlIG1hcHBpbmcgYW5kIG9sZF9tYXBwaW5nIGFycmF5cworCSAqLworCVNXQVAoZ3JhcGgtPm1hcHBpbmcsIGdyYXBoLT5vbGRfbWFwcGluZyk7CisKKwkvKgorCSAqIENsZWFyIG91dCB0aGUgbWFwcGluZyBhcnJheQogCSAqLwogCWZvciAoaSA9IDA7IGkgPCBncmFwaC0+bWFwcGluZ19zaXplOyBpKyspCi0JCWdyYXBoLT5uZXdfbWFwcGluZ1tpXSA9IC0xOworCQlncmFwaC0+bWFwcGluZ1tpXSA9IC0xOwogCiAJZm9yIChpID0gMDsgaSA8IGdyYXBoLT5tYXBwaW5nX3NpemU7IGkrKykgewotCQlpbnQgdGFyZ2V0ID0gZ3JhcGgtPm1hcHBpbmdbaV07CisJCWludCB0YXJnZXQgPSBncmFwaC0+b2xkX21hcHBpbmdbaV07CiAJCWlmICh0YXJnZXQgPCAwKQogCQkJY29udGludWU7CiAKQEAgLTEwODQsMTQgKzExNzMsMTQgQEAKIAkJCSAqIFRoaXMgY29sdW1uIGlzIGFscmVhZHkgaW4gdGhlCiAJCQkgKiBjb3JyZWN0IHBsYWNlCiAJCQkgKi8KLQkJCWFzc2VydChncmFwaC0+bmV3X21hcHBpbmdbaV0gPT0gLTEpOwotCQkJZ3JhcGgtPm5ld19tYXBwaW5nW2ldID0gdGFyZ2V0OwotCQl9IGVsc2UgaWYgKGdyYXBoLT5uZXdfbWFwcGluZ1tpIC0gMV0gPCAwKSB7CisJCQlhc3NlcnQoZ3JhcGgtPm1hcHBpbmdbaV0gPT0gLTEpOworCQkJZ3JhcGgtPm1hcHBpbmdbaV0gPSB0YXJnZXQ7CisJCX0gZWxzZSBpZiAoZ3JhcGgtPm1hcHBpbmdbaSAtIDFdIDwgMCkgewogCQkJLyoKIAkJCSAqIE5vdGhpbmcgaXMgdG8gdGhlIGxlZnQuCiAJCQkgKiBNb3ZlIHRvIHRoZSBsZWZ0IGJ5IG9uZQogCQkJICovCi0JCQlncmFwaC0+bmV3X21hcHBpbmdbaSAtIDFdID0gdGFyZ2V0OworCQkJZ3JhcGgtPm1hcHBpbmdbaSAtIDFdID0gdGFyZ2V0OwogCQkJLyoKIAkJCSAqIElmIHRoZXJlIGlzbid0IGFscmVhZHkgYW4gZWRnZSBtb3ZpbmcgaG9yaXpvbnRhbGx5CiAJCQkgKiBzZWxlY3QgdGhpcyBvbmUuCkBAIC0xMTA3LDkgKzExOTYsOSBAQAogCQkJCSAqIGxpbmUuCiAJCQkJICovCiAJCQkJZm9yIChqID0gKHRhcmdldCAqIDIpKzM7IGogPCAoaSAtIDIpOyBqICs9IDIpCi0JCQkJCWdyYXBoLT5uZXdfbWFwcGluZ1tqXSA9IHRhcmdldDsKKwkJCQkJZ3JhcGgtPm1hcHBpbmdbal0gPSB0YXJnZXQ7CiAJCQl9Ci0JCX0gZWxzZSBpZiAoZ3JhcGgtPm5ld19tYXBwaW5nW2kgLSAxXSA9PSB0YXJnZXQpIHsKKwkJfSBlbHNlIGlmIChncmFwaC0+bWFwcGluZ1tpIC0gMV0gPT0gdGFyZ2V0KSB7CiAJCQkvKgogCQkJICogVGhlcmUgaXMgYSBicmFuY2ggbGluZSB0byBvdXIgbGVmdAogCQkJICogYWxyZWFkeSwgYW5kIGl0IGlzIG91ciB0YXJnZXQuICBXZQpAQCAtMTExNyw3ICsxMjA2LDcgQEAKIAkJCSAqIHRoZSBzYW1lIHBhcmVudCBjb21taXQuCiAJCQkgKgogCQkJICogV2UgZG9uJ3QgaGF2ZSB0byBhZGQgYW55dGhpbmcgdG8gdGhlCi0JCQkgKiBvdXRwdXQgb3IgbmV3X21hcHBpbmcsIHNpbmNlIHRoZQorCQkJICogb3V0cHV0IG9yIG1hcHBpbmcsIHNpbmNlIHRoZQogCQkJICogZXhpc3RpbmcgYnJhbmNoIGxpbmUgaGFzIGFscmVhZHkgdGFrZW4KIAkJCSAqIGNhcmUgb2YgaXQuCiAJCQkgKi8KQEAgLTExMzMsMTAgKzEyMjIsMTAgQEAKIAkJCSAqIFRoZSBicmFuY2ggdG8gdGhlIGxlZnQgb2YgdGhhdCBzcGFjZQogCQkJICogc2hvdWxkIGJlIG91ciBldmVudHVhbCB0YXJnZXQuCiAJCQkgKi8KLQkJCWFzc2VydChncmFwaC0+bmV3X21hcHBpbmdbaSAtIDFdID4gdGFyZ2V0KTsKLQkJCWFzc2VydChncmFwaC0+bmV3X21hcHBpbmdbaSAtIDJdIDwgMCk7Ci0JCQlhc3NlcnQoZ3JhcGgtPm5ld19tYXBwaW5nW2kgLSAzXSA9PSB0YXJnZXQpOwotCQkJZ3JhcGgtPm5ld19tYXBwaW5nW2kgLSAyXSA9IHRhcmdldDsKKwkJCWFzc2VydChncmFwaC0+bWFwcGluZ1tpIC0gMV0gPiB0YXJnZXQpOworCQkJYXNzZXJ0KGdyYXBoLT5tYXBwaW5nW2kgLSAyXSA8IDApOworCQkJYXNzZXJ0KGdyYXBoLT5tYXBwaW5nW2kgLSAzXSA9PSB0YXJnZXQpOworCQkJZ3JhcGgtPm1hcHBpbmdbaSAtIDJdID0gdGFyZ2V0OwogCQkJLyoKIAkJCSAqIE1hcmsgdGhpcyBicmFuY2ggYXMgdGhlIGhvcml6b250YWwgZWRnZSB0bwogCQkJICogcHJldmVudCBhbnkgb3RoZXIgZWRnZXMgZnJvbSBtb3ZpbmcKQEAgLTExNDgsMjAgKzEyMzcsMjUgQEAKIAl9CiAKIAkvKgorCSAqIENvcHkgdGhlIGN1cnJlbnQgbWFwcGluZyBhcnJheSBpbnRvIG9sZF9tYXBwaW5nCisJICovCisJQ09QWV9BUlJBWShncmFwaC0+b2xkX21hcHBpbmcsIGdyYXBoLT5tYXBwaW5nLCBncmFwaC0+bWFwcGluZ19zaXplKTsKKworCS8qCiAJICogVGhlIG5ldyBtYXBwaW5nIG1heSBiZSAxIHNtYWxsZXIgdGhhbiB0aGUgb2xkIG1hcHBpbmcKIAkgKi8KLQlpZiAoZ3JhcGgtPm5ld19tYXBwaW5nW2dyYXBoLT5tYXBwaW5nX3NpemUgLSAxXSA8IDApCisJaWYgKGdyYXBoLT5tYXBwaW5nW2dyYXBoLT5tYXBwaW5nX3NpemUgLSAxXSA8IDApCiAJCWdyYXBoLT5tYXBwaW5nX3NpemUtLTsKIAogCS8qCiAJICogT3V0cHV0IG91dCBhIGxpbmUgYmFzZWQgb24gdGhlIG5ldyBtYXBwaW5nIGluZm8KIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgZ3JhcGgtPm1hcHBpbmdfc2l6ZTsgaSsrKSB7Ci0JCWludCB0YXJnZXQgPSBncmFwaC0+bmV3X21hcHBpbmdbaV07CisJCWludCB0YXJnZXQgPSBncmFwaC0+bWFwcGluZ1tpXTsKIAkJaWYgKHRhcmdldCA8IDApCi0JCQlzdHJidWZfYWRkY2goc2IsICcgJyk7CisJCQlncmFwaF9saW5lX2FkZGNoKGxpbmUsICcgJyk7CiAJCWVsc2UgaWYgKHRhcmdldCAqIDIgPT0gaSkKLQkJCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsICZncmFwaC0+bmV3X2NvbHVtbnNbdGFyZ2V0XSwgJ3wnKTsKKwkJCWdyYXBoX2xpbmVfd3JpdGVfY29sdW1uKGxpbmUsICZncmFwaC0+bmV3X2NvbHVtbnNbdGFyZ2V0XSwgJ3wnKTsKIAkJZWxzZSBpZiAodGFyZ2V0ID09IGhvcml6b250YWxfZWRnZV90YXJnZXQgJiYKIAkJCSBpICE9IGhvcml6b250YWxfZWRnZSAtIDEpIHsKIAkJCQkvKgpAQCAtMTE3MCwyNCArMTI2NCwxNyBAQAogCQkJCSAqIHdvbid0IGNvbnRpbnVlIGludG8gdGhlIG5leHQgbGluZS4KIAkJCQkgKi8KIAkJCQlpZiAoaSAhPSAodGFyZ2V0ICogMikrMykKLQkJCQkJZ3JhcGgtPm5ld19tYXBwaW5nW2ldID0gLTE7CisJCQkJCWdyYXBoLT5tYXBwaW5nW2ldID0gLTE7CiAJCQkJdXNlZF9ob3Jpem9udGFsID0gMTsKLQkJCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsICZncmFwaC0+bmV3X2NvbHVtbnNbdGFyZ2V0XSwgJ18nKTsKKwkJCWdyYXBoX2xpbmVfd3JpdGVfY29sdW1uKGxpbmUsICZncmFwaC0+bmV3X2NvbHVtbnNbdGFyZ2V0XSwgJ18nKTsKIAkJfSBlbHNlIHsKIAkJCWlmICh1c2VkX2hvcml6b250YWwgJiYgaSA8IGhvcml6b250YWxfZWRnZSkKLQkJCQlncmFwaC0+bmV3X21hcHBpbmdbaV0gPSAtMTsKLQkJCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsICZncmFwaC0+bmV3X2NvbHVtbnNbdGFyZ2V0XSwgJy8nKTsKKwkJCQlncmFwaC0+bWFwcGluZ1tpXSA9IC0xOworCQkJZ3JhcGhfbGluZV93cml0ZV9jb2x1bW4obGluZSwgJmdyYXBoLT5uZXdfY29sdW1uc1t0YXJnZXRdLCAnLycpOwogCiAJCX0KIAl9CiAKLQlncmFwaF9wYWRfaG9yaXpvbnRhbGx5KGdyYXBoLCBzYiwgZ3JhcGgtPm1hcHBpbmdfc2l6ZSk7Ci0KLQkvKgotCSAqIFN3YXAgbWFwcGluZyBhbmQgbmV3X21hcHBpbmcKLQkgKi8KLQlTV0FQKGdyYXBoLT5tYXBwaW5nLCBncmFwaC0+bmV3X21hcHBpbmcpOwotCiAJLyoKIAkgKiBJZiBncmFwaC0+bWFwcGluZyBpbmRpY2F0ZXMgdGhhdCBhbGwgb2YgdGhlIGJyYW5jaCBsaW5lcwogCSAqIGFyZSBhbHJlYWR5IGluIHRoZSBjb3JyZWN0IHBvc2l0aW9ucywgd2UgYXJlIGRvbmUuCkBAIC0xMTk5LDM1ICsxMjg2LDQ5IEBACiAKIGludCBncmFwaF9uZXh0X2xpbmUoc3RydWN0IGdpdF9ncmFwaCAqZ3JhcGgsIHN0cnVjdCBzdHJidWYgKnNiKQogeworCWludCBzaG93bl9jb21taXRfbGluZSA9IDA7CisJc3RydWN0IGdyYXBoX2xpbmUgbGluZSA9IHsgLmJ1ZiA9IHNiLCAud2lkdGggPSAwIH07CisKKwkvKgorCSAqIFdlIGNvdWxkIGNvbmNlaXZhYmxlIGJlIGNhbGxlZCB3aXRoIGEgTlVMTCBjb21taXQKKwkgKiBpZiBvdXIgY2FsbGVyIGhhcyBhIGJ1ZywgYW5kIGludm9rZXMgZ3JhcGhfbmV4dF9saW5lKCkKKwkgKiBpbW1lZGlhdGVseSBhZnRlciBncmFwaF9pbml0KCksIHdpdGhvdXQgZmlyc3QgY2FsbGluZworCSAqIGdyYXBoX3VwZGF0ZSgpLiAgUmV0dXJuIHdpdGhvdXQgb3V0cHV0dGluZyBhbnl0aGluZyBpbiB0aGlzCisJICogY2FzZS4KKwkgKi8KKwlpZiAoIWdyYXBoLT5jb21taXQpCisJCXJldHVybiAtMTsKKwogCXN3aXRjaCAoZ3JhcGgtPnN0YXRlKSB7CiAJY2FzZSBHUkFQSF9QQURESU5HOgotCQlncmFwaF9vdXRwdXRfcGFkZGluZ19saW5lKGdyYXBoLCBzYik7Ci0JCXJldHVybiAwOworCQlncmFwaF9vdXRwdXRfcGFkZGluZ19saW5lKGdyYXBoLCAmbGluZSk7CisJCWJyZWFrOwogCWNhc2UgR1JBUEhfU0tJUDoKLQkJZ3JhcGhfb3V0cHV0X3NraXBfbGluZShncmFwaCwgc2IpOwotCQlyZXR1cm4gMDsKKwkJZ3JhcGhfb3V0cHV0X3NraXBfbGluZShncmFwaCwgJmxpbmUpOworCQlicmVhazsKIAljYXNlIEdSQVBIX1BSRV9DT01NSVQ6Ci0JCWdyYXBoX291dHB1dF9wcmVfY29tbWl0X2xpbmUoZ3JhcGgsIHNiKTsKLQkJcmV0dXJuIDA7CisJCWdyYXBoX291dHB1dF9wcmVfY29tbWl0X2xpbmUoZ3JhcGgsICZsaW5lKTsKKwkJYnJlYWs7CiAJY2FzZSBHUkFQSF9DT01NSVQ6Ci0JCWdyYXBoX291dHB1dF9jb21taXRfbGluZShncmFwaCwgc2IpOwotCQlyZXR1cm4gMTsKKwkJZ3JhcGhfb3V0cHV0X2NvbW1pdF9saW5lKGdyYXBoLCAmbGluZSk7CisJCXNob3duX2NvbW1pdF9saW5lID0gMTsKKwkJYnJlYWs7CiAJY2FzZSBHUkFQSF9QT1NUX01FUkdFOgotCQlncmFwaF9vdXRwdXRfcG9zdF9tZXJnZV9saW5lKGdyYXBoLCBzYik7Ci0JCXJldHVybiAwOworCQlncmFwaF9vdXRwdXRfcG9zdF9tZXJnZV9saW5lKGdyYXBoLCAmbGluZSk7CisJCWJyZWFrOwogCWNhc2UgR1JBUEhfQ09MTEFQU0lORzoKLQkJZ3JhcGhfb3V0cHV0X2NvbGxhcHNpbmdfbGluZShncmFwaCwgc2IpOwotCQlyZXR1cm4gMDsKKwkJZ3JhcGhfb3V0cHV0X2NvbGxhcHNpbmdfbGluZShncmFwaCwgJmxpbmUpOworCQlicmVhazsKIAl9CiAKLQlhc3NlcnQoMCk7Ci0JcmV0dXJuIDA7CisJZ3JhcGhfcGFkX2hvcml6b250YWxseShncmFwaCwgJmxpbmUpOworCXJldHVybiBzaG93bl9jb21taXRfbGluZTsKIH0KIAogc3RhdGljIHZvaWQgZ3JhcGhfcGFkZGluZ19saW5lKHN0cnVjdCBnaXRfZ3JhcGggKmdyYXBoLCBzdHJ1Y3Qgc3RyYnVmICpzYikKIHsKIAlpbnQgaTsKLQlpbnQgY2hhcnNfd3JpdHRlbiA9IDA7CisJc3RydWN0IGdyYXBoX2xpbmUgbGluZSA9IHsgLmJ1ZiA9IHNiLCAud2lkdGggPSAwIH07CiAKIAlpZiAoZ3JhcGgtPnN0YXRlICE9IEdSQVBIX0NPTU1JVCkgewogCQlncmFwaF9uZXh0X2xpbmUoZ3JhcGgsIHNiKTsKQEAgLTEyNDQsMjAgKzEzNDUsMTcgQEAKIAlmb3IgKGkgPSAwOyBpIDwgZ3JhcGgtPm51bV9jb2x1bW5zOyBpKyspIHsKIAkJc3RydWN0IGNvbHVtbiAqY29sID0gJmdyYXBoLT5jb2x1bW5zW2ldOwogCi0JCXN0cmJ1Zl93cml0ZV9jb2x1bW4oc2IsIGNvbCwgJ3wnKTsKLQkJY2hhcnNfd3JpdHRlbisrOworCQlncmFwaF9saW5lX3dyaXRlX2NvbHVtbigmbGluZSwgY29sLCAnfCcpOwogCiAJCWlmIChjb2wtPmNvbW1pdCA9PSBncmFwaC0+Y29tbWl0ICYmIGdyYXBoLT5udW1fcGFyZW50cyA+IDIpIHsKIAkJCWludCBsZW4gPSAoZ3JhcGgtPm51bV9wYXJlbnRzIC0gMikgKiAyOwotCQkJc3RyYnVmX2FkZGNoYXJzKHNiLCAnICcsIGxlbik7Ci0JCQljaGFyc193cml0dGVuICs9IGxlbjsKKwkJCWdyYXBoX2xpbmVfYWRkY2hhcnMoJmxpbmUsICcgJywgbGVuKTsKIAkJfSBlbHNlIHsKLQkJCXN0cmJ1Zl9hZGRjaChzYiwgJyAnKTsKLQkJCWNoYXJzX3dyaXR0ZW4rKzsKKwkJCWdyYXBoX2xpbmVfYWRkY2goJmxpbmUsICcgJyk7CiAJCX0KIAl9CiAKLQlncmFwaF9wYWRfaG9yaXpvbnRhbGx5KGdyYXBoLCBzYiwgY2hhcnNfd3JpdHRlbik7CisJZ3JhcGhfcGFkX2hvcml6b250YWxseShncmFwaCwgJmxpbmUpOwogCiAJLyoKIAkgKiBVcGRhdGUgZ3JhcGgtPnByZXZfc3RhdGUgc2luY2Ugd2UgaGF2ZSBvdXRwdXQgYSBwYWRkaW5nIGxpbmUKZGlmZiAtLWdpdCBhL2hhc2htYXAuYyBiL2hhc2htYXAuYwppbmRleCAzOWMxMzExLi4wOTgxM2UxIDEwMDY0NAotLS0gYS9oYXNobWFwLmMKKysrIGIvaGFzaG1hcC5jCkBAIC01MSw3ICs1MSw3IEBACiB9CiAKIC8qCi0gKiBJbmNvcG9yYXRlIGFub3RoZXIgY2h1bmsgb2YgZGF0YSBpbnRvIGEgbWVtaWhhc2gKKyAqIEluY29ycG9yYXRlIGFub3RoZXIgY2h1bmsgb2YgZGF0YSBpbnRvIGEgbWVtaWhhc2gKICAqIGNvbXB1dGF0aW9uLgogICovCiB1bnNpZ25lZCBpbnQgbWVtaWhhc2hfY29udCh1bnNpZ25lZCBpbnQgaGFzaF9zZWVkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBsZW4pCmRpZmYgLS1naXQgYS9oYXNobWFwLmggYi9oYXNobWFwLmgKaW5kZXggYmQyNzAxNS4uNzlhZTlmOCAxMDA2NDQKLS0tIGEvaGFzaG1hcC5oCisrKyBiL2hhc2htYXAuaApAQCAtNTksNyArNTksNyBAQAogICoKICAqICAgICAgICAgaWYgKCFzdHJjbXAoInByaW50X2FsbF9ieV9rZXkiLCBhY3Rpb24pKSB7CiAgKiAgICAgICAgICAgICBzdHJ1Y3QgbG9uZzJzdHJpbmcgaywgKmU7Ci0gKiAgICAgICAgICAgICBoYXNobWFwX2VudHJ5X2luaXQoJmstPmVudCwgbWVtaGFzaCgma2V5LCBzaXplb2YobG9uZykpKTsKKyAqICAgICAgICAgICAgIGhhc2htYXBfZW50cnlfaW5pdCgmay5lbnQsIG1lbWhhc2goJmtleSwgc2l6ZW9mKGxvbmcpKSk7CiAgKiAgICAgICAgICAgICBrLmtleSA9IGtleTsKICAqCiAgKiAgICAgICAgICAgICBmbGFncyAmPSB+Q09NUEFSRV9WQUxVRTsKQEAgLTg3LDEyICs4NywxMiBAQAogICoKICAqICAgICAgICAgaWYgKCFzdHJjbXAoImhhc19leGFjdF9tYXRjaF9ub19oZWFwX2FsbG9jIiwgYWN0aW9uKSkgewogICogICAgICAgICAgICAgc3RydWN0IGxvbmcyc3RyaW5nIGs7Ci0gKiAgICAgICAgICAgICBoYXNobWFwX2VudHJ5X2luaXQoJmstPmVudCwgbWVtaGFzaCgma2V5LCBzaXplb2YobG9uZykpKTsKKyAqICAgICAgICAgICAgIGhhc2htYXBfZW50cnlfaW5pdCgmay5lbnQsIG1lbWhhc2goJmtleSwgc2l6ZW9mKGxvbmcpKSk7CiAgKiAgICAgICAgICAgICBrLmtleSA9IGtleTsKICAqCiAgKiAgICAgICAgICAgICBmbGFncyB8PSBDT01QQVJFX1ZBTFVFOwogICogICAgICAgICAgICAgcHJpbnRmKCIlc2ZvdW5kXG4iLAotICogICAgICAgICAgICAgICAgICAgIGhhc2htYXBfZ2V0KCZtYXAsICZrLT5lbnQsIHZhbHVlKSA/ICIiIDogIm5vdCAiKTsKKyAqICAgICAgICAgICAgICAgICAgICBoYXNobWFwX2dldCgmbWFwLCAmay5lbnQsIHZhbHVlKSA/ICIiIDogIm5vdCAiKTsKICAqICAgICAgICAgfQogICoKICAqICAgICAgICAgaWYgKCFzdHJjbXAoImVuZCIsIGFjdGlvbikpIHsKQEAgLTUwMiw3ICs1MDIsNyBAQAogfQogCiAvKgotICogUmUtZW5hYmxlIGl0ZW0gY291dGluZyB3aGVuIGFkZGluZy9yZW1vdmluZyBpdGVtcy4KKyAqIFJlLWVuYWJsZSBpdGVtIGNvdW50aW5nIHdoZW4gYWRkaW5nL3JlbW92aW5nIGl0ZW1zLgogICogSWYgY291bnRpbmcgaXMgY3VycmVudGx5IGRpc2FibGVkLCBpdCB3aWxsIGZvcmNlIGNvdW50IHRoZW0uCiAgKiBJdCBXSUxMIE5PVCBhdXRvbWF0aWNhbGx5IHJlaGFzaCB0aGVtLgogICovCmRpZmYgLS1naXQgYS9oZWxwLmMgYi9oZWxwLmMKaW5kZXggOWZmMmJlNi4uY2Y2NzYyNCAxMDA2NDQKLS0tIGEvaGVscC5jCisrKyBiL2hlbHAuYwpAQCAtMzQsNyArMzQsNyBAQAogCXsgQ0FUX2ZvcmVpZ25zY21pbnRlcmZhY2UsIE5fKCJJbnRlcmFjdGluZyB3aXRoIE90aGVycyIpIH0sCiAJeyBDQVRfcGx1bWJpbmdtYW5pcHVsYXRvcnMsIE5fKCJMb3ctbGV2ZWwgQ29tbWFuZHMgLyBNYW5pcHVsYXRvcnMiKSB9LAogCXsgQ0FUX3BsdW1iaW5naW50ZXJyb2dhdG9ycywgTl8oIkxvdy1sZXZlbCBDb21tYW5kcyAvIEludGVycm9nYXRvcnMiKSB9LAotCXsgQ0FUX3N5bmNoaW5ncmVwb3NpdG9yaWVzLCBOXygiTG93LWxldmVsIENvbW1hbmRzIC8gU3luY2hpbmcgUmVwb3NpdG9yaWVzIikgfSwKKwl7IENBVF9zeW5jaGluZ3JlcG9zaXRvcmllcywgTl8oIkxvdy1sZXZlbCBDb21tYW5kcyAvIFN5bmNpbmcgUmVwb3NpdG9yaWVzIikgfSwKIAl7IENBVF9wdXJlaGVscGVycywgTl8oIkxvdy1sZXZlbCBDb21tYW5kcyAvIEludGVybmFsIEhlbHBlcnMiKSB9LAogCXsgMCwgTlVMTCB9CiB9OwpkaWZmIC0tZ2l0IGEvaGV4LmMgYi9oZXguYwppbmRleCA3ODUwYTg4Li5mZDdmMDBjIDEwMDY0NAotLS0gYS9oZXguYworKysgYi9oZXguYwpAQCAtOTAsMTEgKzkwLDYgQEAKIAlyZXR1cm4gYnVmZmVyOwogfQogCi1jaGFyICpzaGExX3RvX2hleF9yKGNoYXIgKmJ1ZmZlciwgY29uc3QgdW5zaWduZWQgY2hhciAqc2hhMSkKLXsKLQlyZXR1cm4gaGFzaF90b19oZXhfYWxnb3BfcihidWZmZXIsIHNoYTEsICZoYXNoX2FsZ29zW0dJVF9IQVNIX1NIQTFdKTsKLX0KLQogY2hhciAqb2lkX3RvX2hleF9yKGNoYXIgKmJ1ZmZlciwgY29uc3Qgc3RydWN0IG9iamVjdF9pZCAqb2lkKQogewogCXJldHVybiBoYXNoX3RvX2hleF9hbGdvcF9yKGJ1ZmZlciwgb2lkLT5oYXNoLCB0aGVfaGFzaF9hbGdvKTsKQEAgLTEwOCwxMSArMTAzLDYgQEAKIAlyZXR1cm4gaGFzaF90b19oZXhfYWxnb3BfcihoZXhidWZmZXJbYnVmbm9dLCBoYXNoLCBhbGdvcCk7CiB9CiAKLWNoYXIgKnNoYTFfdG9faGV4KGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNoYTEpCi17Ci0JcmV0dXJuIGhhc2hfdG9faGV4X2FsZ29wKHNoYTEsICZoYXNoX2FsZ29zW0dJVF9IQVNIX1NIQTFdKTsKLX0KLQogY2hhciAqaGFzaF90b19oZXgoY29uc3QgdW5zaWduZWQgY2hhciAqaGFzaCkKIHsKIAlyZXR1cm4gaGFzaF90b19oZXhfYWxnb3AoaGFzaCwgdGhlX2hhc2hfYWxnbyk7CmRpZmYgLS1naXQgYS9odHRwLmMgYi9odHRwLmMKaW5kZXggMDI3YTg2ZC4uNWYzNDgxNiAxMDA2NDQKLS0tIGEvaHR0cC5jCisrKyBiL2h0dHAuYwpAQCAtMTUwLDcgKzE1MCw3IEBACiAKIHN0YXRpYyBzdHJ1Y3QgY3VybF9zbGlzdCAqcHJhZ21hX2hlYWRlcjsKIHN0YXRpYyBzdHJ1Y3QgY3VybF9zbGlzdCAqbm9fcHJhZ21hX2hlYWRlcjsKLXN0YXRpYyBzdHJ1Y3QgY3VybF9zbGlzdCAqZXh0cmFfaHR0cF9oZWFkZXJzOworc3RhdGljIHN0cnVjdCBzdHJpbmdfbGlzdCBleHRyYV9odHRwX2hlYWRlcnMgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKIAogc3RhdGljIHN0cnVjdCBhY3RpdmVfcmVxdWVzdF9zbG90ICphY3RpdmVfcXVldWVfaGVhZDsKIApAQCAtNDE0LDExICs0MTQsOSBAQAogCQlpZiAoIXZhbHVlKSB7CiAJCQlyZXR1cm4gY29uZmlnX2Vycm9yX25vbmJvb2wodmFyKTsKIAkJfSBlbHNlIGlmICghKnZhbHVlKSB7Ci0JCQljdXJsX3NsaXN0X2ZyZWVfYWxsKGV4dHJhX2h0dHBfaGVhZGVycyk7Ci0JCQlleHRyYV9odHRwX2hlYWRlcnMgPSBOVUxMOworCQkJc3RyaW5nX2xpc3RfY2xlYXIoJmV4dHJhX2h0dHBfaGVhZGVycywgMCk7CiAJCX0gZWxzZSB7Ci0JCQlleHRyYV9odHRwX2hlYWRlcnMgPQotCQkJCWN1cmxfc2xpc3RfYXBwZW5kKGV4dHJhX2h0dHBfaGVhZGVycywgdmFsdWUpOworCQkJc3RyaW5nX2xpc3RfYXBwZW5kKCZleHRyYV9odHRwX2hlYWRlcnMsIHZhbHVlKTsKIAkJfQogCQlyZXR1cm4gMDsKIAl9CkBAIC0xMjAyLDggKzEyMDAsNyBAQAogI2VuZGlmCiAJY3VybF9nbG9iYWxfY2xlYW51cCgpOwogCi0JY3VybF9zbGlzdF9mcmVlX2FsbChleHRyYV9odHRwX2hlYWRlcnMpOwotCWV4dHJhX2h0dHBfaGVhZGVycyA9IE5VTEw7CisJc3RyaW5nX2xpc3RfY2xlYXIoJmV4dHJhX2h0dHBfaGVhZGVycywgMCk7CiAKIAljdXJsX3NsaXN0X2ZyZWVfYWxsKHByYWdtYV9oZWFkZXIpOwogCXByYWdtYV9oZWFkZXIgPSBOVUxMOwpAQCAtMTYyNywxMCArMTYyNCwxMSBAQAogCiBzdHJ1Y3QgY3VybF9zbGlzdCAqaHR0cF9jb3B5X2RlZmF1bHRfaGVhZGVycyh2b2lkKQogewotCXN0cnVjdCBjdXJsX3NsaXN0ICpoZWFkZXJzID0gTlVMTCwgKmg7CisJc3RydWN0IGN1cmxfc2xpc3QgKmhlYWRlcnMgPSBOVUxMOworCWNvbnN0IHN0cnVjdCBzdHJpbmdfbGlzdF9pdGVtICppdGVtOwogCi0JZm9yIChoID0gZXh0cmFfaHR0cF9oZWFkZXJzOyBoOyBoID0gaC0+bmV4dCkKLQkJaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcnMsIGgtPmRhdGEpOworCWZvcl9lYWNoX3N0cmluZ19saXN0X2l0ZW0oaXRlbSwgJmV4dHJhX2h0dHBfaGVhZGVycykKKwkJaGVhZGVycyA9IGN1cmxfc2xpc3RfYXBwZW5kKGhlYWRlcnMsIGl0ZW0tPnN0cmluZyk7CiAKIAlyZXR1cm4gaGVhZGVyczsKIH0KZGlmZiAtLWdpdCBhL21lcmdlLXJlY3Vyc2l2ZS5jIGIvbWVyZ2UtcmVjdXJzaXZlLmMKaW5kZXggNDJiZTdjOS4uMTE4NjlhZCAxMDA2NDQKLS0tIGEvbWVyZ2UtcmVjdXJzaXZlLmMKKysrIGIvbWVyZ2UtcmVjdXJzaXZlLmMKQEAgLTE5NTEsNiArMTk1MSwxNiBAQAogCQlyZXR1cm4gTlVMTDsKIAogCW9sZGxlbiA9IHN0cmxlbihlbnRyeS0+ZGlyKTsKKwlpZiAoZW50cnktPm5ld19kaXIubGVuID09IDApCisJCS8qCisJCSAqIElmIHNvbWVvbmUgcmVuYW1lZC9tZXJnZWQgYSBzdWJkaXJlY3RvcnkgaW50byB0aGUgcm9vdAorCQkgKiBkaXJlY3RvcnkgKGUuZy4gJ3NvbWUvc3ViZGlyJyAtPiAnJyksIHRoZW4gd2Ugd2FudCB0bworCQkgKiBhdm9pZCByZXR1cm5pbmcKKwkJICogICAgICcnICsgJy9maWxlbmFtZScKKwkJICogYXMgdGhlIHJlbmFtZTsgd2UgbmVlZCB0byBtYWtlIG9sZF9wYXRoICsgb2xkbGVuIGFkdmFuY2UKKwkJICogcGFzdCB0aGUgJy8nIGNoYXJhY3Rlci4KKwkJICovCisJCW9sZGxlbisrOwogCW5ld2xlbiA9IGVudHJ5LT5uZXdfZGlyLmxlbiArIChzdHJsZW4ob2xkX3BhdGgpIC0gb2xkbGVuKSArIDE7CiAJc3RyYnVmX2dyb3coJm5ld19wYXRoLCBuZXdsZW4pOwogCXN0cmJ1Zl9hZGRidWYoJm5ld19wYXRoLCAmZW50cnktPm5ld19kaXIpOwpAQCAtMTk2Myw4ICsxOTczLDggQEAKIAkJCQkgICAgY2hhciAqKm9sZF9kaXIsIGNoYXIgKipuZXdfZGlyKQogewogCWNoYXIgKmVuZF9vZl9vbGQsICplbmRfb2ZfbmV3OwotCWludCBvbGRfbGVuLCBuZXdfbGVuOwogCisJLyogRGVmYXVsdCByZXR1cm4gdmFsdWVzOiBOVUxMLCBtZWFuaW5nIG5vIHJlbmFtZSAqLwogCSpvbGRfZGlyID0gTlVMTDsKIAkqbmV3X2RpciA9IE5VTEw7CiAKQEAgLTE5NzUsNDMgKzE5ODUsOTEgQEAKIAkgKiAgICAiYS9iL2MvZCIgd2FzIHJlbmFtZWQgdG8gImEvYi9zb21lL3RoaW5nL2Vsc2UiCiAJICogc28sIGZvciB0aGlzIGV4YW1wbGUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyAiYS9iL2MvZCIgaW4KIAkgKiAqb2xkX2RpciBhbmQgImEvYi9zb21lL3RoaW5nL2Vsc2UiIGluICpuZXdfZGlyLgotCSAqCi0JICogQWxzbywgaWYgdGhlIGJhc2VuYW1lIG9mIHRoZSBmaWxlIGNoYW5nZWQsIHdlIGRvbid0IGNhcmUuICBXZQotCSAqIHdhbnQgdG8ga25vdyB3aGljaCBwb3J0aW9uIG9mIHRoZSBkaXJlY3RvcnksIGlmIGFueSwgY2hhbmdlZC4KKwkgKi8KKworCS8qCisJICogSWYgdGhlIGJhc2VuYW1lIG9mIHRoZSBmaWxlIGNoYW5nZWQsIHdlIGRvbid0IGNhcmUuICBXZSB3YW50CisJICogdG8ga25vdyB3aGljaCBwb3J0aW9uIG9mIHRoZSBkaXJlY3RvcnksIGlmIGFueSwgY2hhbmdlZC4KIAkgKi8KIAllbmRfb2Zfb2xkID0gc3RycmNocihvbGRfcGF0aCwgJy8nKTsKIAllbmRfb2ZfbmV3ID0gc3RycmNocihuZXdfcGF0aCwgJy8nKTsKIAotCWlmIChlbmRfb2Zfb2xkID09IE5VTEwgfHwgZW5kX29mX25ldyA9PSBOVUxMKQorCS8qCisJICogSWYgZW5kX29mX29sZCBpcyBOVUxMLCBvbGRfcGF0aCB3YXNuJ3QgaW4gYSBkaXJlY3RvcnksIHNvIHRoZXJlCisJICogY291bGQgbm90IGJlIGEgZGlyZWN0b3J5IHJlbmFtZSAob3VyIHJ1bGUgZWxzZXdoZXJlIHRoYXQgYQorCSAqIGRpcmVjdG9yeSB3aGljaCBzdGlsbCBleGlzdHMgaXMgbm90IGNvbnNpZGVyZWQgdG8gaGF2ZSBiZWVuCisJICogcmVuYW1lZCBtZWFucyB0aGUgcm9vdCBkaXJlY3RvcnkgY2FuIG5ldmVyIGJlIHJlbmFtZWQgLS0gYmVjYXVzZQorCSAqIHRoZSByb290IGRpcmVjdG9yeSBhbHdheXMgZXhpc3RzKS4KKwkgKi8KKwlpZiAoZW5kX29mX29sZCA9PSBOVUxMKQorCQlyZXR1cm47IC8qIE5vdGU6ICpvbGRfZGlyIGFuZCAqbmV3X2RpciBhcmUgc3RpbGwgTlVMTCAqLworCisJLyoKKwkgKiBJZiBuZXdfcGF0aCBjb250YWlucyBubyBkaXJlY3RvcnkgKGVuZF9vZl9uZXcgaXMgTlVMTCksIHRoZW4gd2UKKwkgKiBoYXZlIGEgcmVuYW1lIG9mIG9sZF9wYXRoJ3MgZGlyZWN0b3J5IHRvIHRoZSByb290IGRpcmVjdG9yeS4KKwkgKi8KKwlpZiAoZW5kX29mX25ldyA9PSBOVUxMKSB7CisJCSpvbGRfZGlyID0geHN0cm5kdXAob2xkX3BhdGgsIGVuZF9vZl9vbGQgLSBvbGRfcGF0aCk7CisJCSpuZXdfZGlyID0geHN0cmR1cCgiIik7CiAJCXJldHVybjsKKwl9CisKKwkvKiBGaW5kIHRoZSBmaXJzdCBub24tbWF0Y2hpbmcgY2hhcmFjdGVyIHRyYXZlcnNpbmcgYmFja3dhcmRzICovCiAJd2hpbGUgKCotLWVuZF9vZl9uZXcgPT0gKi0tZW5kX29mX29sZCAmJgogCSAgICAgICBlbmRfb2Zfb2xkICE9IG9sZF9wYXRoICYmCiAJICAgICAgIGVuZF9vZl9uZXcgIT0gbmV3X3BhdGgpCiAJCTsgLyogRG8gbm90aGluZzsgYWxsIGluIHRoZSB3aGlsZSBsb29wICovCisKKwkvKgorCSAqIElmIGJvdGggZ290IGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGVpciBzdHJpbmdzLCB0aGVuIHRoZQorCSAqIGRpcmVjdG9yeSBkaWRuJ3QgY2hhbmdlIGF0IGFsbCwgb25seSB0aGUgYmFzZW5hbWUgZGlkLgorCSAqLworCWlmIChlbmRfb2Zfb2xkID09IG9sZF9wYXRoICYmIGVuZF9vZl9uZXcgPT0gbmV3X3BhdGggJiYKKwkgICAgKmVuZF9vZl9vbGQgPT0gKmVuZF9vZl9uZXcpCisJCXJldHVybjsgLyogTm90ZTogKm9sZF9kaXIgYW5kICpuZXdfZGlyIGFyZSBzdGlsbCBOVUxMICovCisKKwkvKgorCSAqIElmIGVuZF9vZl9uZXcgZ290IGJhY2sgdG8gdGhlIGJlZ2lubmluZyBvZiBpdHMgc3RyaW5nLCBhbmQKKwkgKiBlbmRfb2Zfb2xkIGdvdCBiYWNrIHRvIHRoZSBiZWdpbm5pbmcgb2Ygc29tZSBzdWJkaXJlY3RvcnksIHRoZW4KKwkgKiB3ZSBoYXZlIGEgcmVuYW1lL21lcmdlIG9mIGEgc3ViZGlyZWN0b3J5IGludG8gdGhlIHJvb3QsIHdoaWNoCisJICogbmVlZHMgc2xpZ2h0bHkgc3BlY2lhbCBoYW5kbGluZy4KKwkgKgorCSAqIE5vdGU6IFRoZXJlIGlzIG5vIG5lZWQgdG8gY29uc2lkZXIgdGhlIG9wcG9zaXRlIGNhc2UsIHdpdGggYQorCSAqIHJlbmFtZS9tZXJnZSBvZiB0aGUgcm9vdCBkaXJlY3RvcnkgaW50byBzb21lIHN1YmRpcmVjdG9yeQorCSAqIGJlY2F1c2UgYXMgbm90ZWQgYWJvdmUgdGhlIHJvb3QgZGlyZWN0b3J5IGFsd2F5cyBleGlzdHMgc28gaXQKKwkgKiBjYW5ub3QgYmUgY29uc2lkZXJlZCB0byBiZSByZW5hbWVkLgorCSAqLworCWlmIChlbmRfb2ZfbmV3ID09IG5ld19wYXRoICYmCisJICAgIGVuZF9vZl9vbGQgIT0gb2xkX3BhdGggJiYgZW5kX29mX29sZFstMV0gPT0gJy8nKSB7CisJCSpvbGRfZGlyID0geHN0cm5kdXAob2xkX3BhdGgsIC0tZW5kX29mX29sZCAtIG9sZF9wYXRoKTsKKwkJKm5ld19kaXIgPSB4c3RyZHVwKCIiKTsKKwkJcmV0dXJuOworCX0KKwogCS8qCiAJICogV2UndmUgZm91bmQgdGhlIGZpcnN0IG5vbi1tYXRjaGluZyBjaGFyYWN0ZXIgaW4gdGhlIGRpcmVjdG9yeQotCSAqIHBhdGhzLiAgVGhhdCBtZWFucyB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2Ugd2VyZSBjb21wYXJpbmcKLQkgKiByZXByZXNlbnRzIHRoZSByZW5hbWUuICBNb3ZlIGVuZF9vZl9vbGQgYW5kIGVuZF9vZl9uZXcgYmFjawotCSAqIHRvIHRoZSBmdWxsIGRpcmVjdG9yeSBuYW1lLgorCSAqIHBhdGhzLiAgVGhhdCBtZWFucyB0aGUgY3VycmVudCBjaGFyYWN0ZXJzIHdlIHdlcmUgbG9va2luZyBhdAorCSAqIHdlcmUgcGFydCBvZiB0aGUgZmlyc3Qgbm9uLW1hdGNoaW5nIHN1YmRpciBuYW1lIGdvaW5nIGJhY2sgZnJvbQorCSAqIHRoZSBlbmQgb2YgdGhlIHN0cmluZ3MuICBHZXQgdGhlIHdob2xlIG5hbWUgYnkgYWR2YW5jaW5nIGJvdGgKKwkgKiBlbmRfb2Zfb2xkIGFuZCBlbmRfb2ZfbmV3IHRvIHRoZSBORVhUICcvJyBjaGFyYWN0ZXIuICBUaGF0IHdpbGwKKwkgKiByZXByZXNlbnQgdGhlIGVudGlyZSBkaXJlY3RvcnkgcmVuYW1lLgorCSAqCisJICogVGhlIHJlYXNvbiBmb3IgdGhlIGluY3JlbWVudCBpcyBjYXNlcyBsaWtlCisJICogICAgYS9iL3N0YXIvZm9vL3doYXRldmVyLmMgLT4gYS9iL3Rhci9mb28vcmFuZG9tLmMKKwkgKiBBZnRlciBkcm9wcGluZyB0aGUgYmFzZW5hbWUgYW5kIGdvaW5nIGJhY2sgdG8gdGhlIGZpcnN0CisJICogbm9uLW1hdGNoaW5nIGNoYXJhY3Rlciwgd2UncmUgbm93IGNvbXBhcmluZzoKKwkgKiAgICBhL2IvcyAgICAgICAgICBhbmQgICAgICAgICBhL2IvCisJICogYW5kIHdlIHdhbnQgdG8gYmUgY29tcGFyaW5nOgorCSAqICAgIGEvYi9zdGFyLyAgICAgIGFuZCAgICAgICAgIGEvYi90YXIvCisJICogYnV0IHdpdGhvdXQgdGhlIHByZS1pbmNyZW1lbnQsIHRoZSBvbmUgb24gdGhlIHJpZ2h0IHdvdWxkIHN0YXkKKwkgKiBhL2IvLgogCSAqLwotCWlmICgqZW5kX29mX29sZCA9PSAnLycpCi0JCWVuZF9vZl9vbGQrKzsKLQlpZiAoKmVuZF9vZl9vbGQgIT0gJy8nKQotCQllbmRfb2ZfbmV3Kys7Ci0JZW5kX29mX29sZCA9IHN0cmNocihlbmRfb2Zfb2xkLCAnLycpOwotCWVuZF9vZl9uZXcgPSBzdHJjaHIoZW5kX29mX25ldywgJy8nKTsKKwllbmRfb2Zfb2xkID0gc3RyY2hyKCsrZW5kX29mX29sZCwgJy8nKTsKKwllbmRfb2ZfbmV3ID0gc3RyY2hyKCsrZW5kX29mX25ldywgJy8nKTsKIAotCS8qCi0JICogSXQgbWF5IGhhdmUgYmVlbiB0aGUgY2FzZSB0aGF0IG9sZF9wYXRoIGFuZCBuZXdfcGF0aCB3ZXJlIHRoZSBzYW1lCi0JICogZGlyZWN0b3J5IGFsbCBhbG9uZy4gIERvbid0IGNsYWltIGEgcmVuYW1lIGlmIHRoZXkncmUgdGhlIHNhbWUuCi0JICovCi0Jb2xkX2xlbiA9IGVuZF9vZl9vbGQgLSBvbGRfcGF0aDsKLQluZXdfbGVuID0gZW5kX29mX25ldyAtIG5ld19wYXRoOwotCi0JaWYgKG9sZF9sZW4gIT0gbmV3X2xlbiB8fCBzdHJuY21wKG9sZF9wYXRoLCBuZXdfcGF0aCwgb2xkX2xlbikpIHsKLQkJKm9sZF9kaXIgPSB4c3RybmR1cChvbGRfcGF0aCwgb2xkX2xlbik7Ci0JCSpuZXdfZGlyID0geHN0cm5kdXAobmV3X3BhdGgsIG5ld19sZW4pOwotCX0KKwkvKiBDb3B5IHRoZSBvbGQgYW5kIG5ldyBkaXJlY3RvcmllcyBpbnRvICpvbGRfZGlyIGFuZCAqbmV3X2Rpci4gKi8KKwkqb2xkX2RpciA9IHhzdHJuZHVwKG9sZF9wYXRoLCBlbmRfb2Zfb2xkIC0gb2xkX3BhdGgpOworCSpuZXdfZGlyID0geHN0cm5kdXAobmV3X3BhdGgsIGVuZF9vZl9uZXcgLSBuZXdfcGF0aCk7CiB9CiAKIHN0YXRpYyB2b2lkIHJlbW92ZV9oYXNobWFwX2VudHJpZXMoc3RydWN0IGhhc2htYXAgKmRpcl9yZW5hbWVzLApkaWZmIC0tZ2l0IGEvbWlkeC5jIGIvbWlkeC5jCmluZGV4IGYyOWFmYzAuLjM3ZWMyODYgMTAwNjQ0Ci0tLSBhL21pZHguYworKysgYi9taWR4LmMKQEAgLTQ0OCw2ICs0NDgsOCBAQAogCXVpbnQzMl90IG5yOwogCXVpbnQzMl90IGFsbG9jOwogCXN0cnVjdCBtdWx0aV9wYWNrX2luZGV4ICptOworCXN0cnVjdCBwcm9ncmVzcyAqcHJvZ3Jlc3M7CisJdW5zaWduZWQgcGFja19wYXRoc19jaGVja2VkOwogfTsKIAogc3RhdGljIHZvaWQgYWRkX3BhY2tfdG9fbWlkeChjb25zdCBjaGFyICpmdWxsX3BhdGgsIHNpemVfdCBmdWxsX3BhdGhfbGVuLApAQCAtNDU2LDYgKzQ1OCw3IEBACiAJc3RydWN0IHBhY2tfbGlzdCAqcGFja3MgPSAoc3RydWN0IHBhY2tfbGlzdCAqKWRhdGE7CiAKIAlpZiAoZW5kc193aXRoKGZpbGVfbmFtZSwgIi5pZHgiKSkgeworCQlkaXNwbGF5X3Byb2dyZXNzKHBhY2tzLT5wcm9ncmVzcywgKytwYWNrcy0+cGFja19wYXRoc19jaGVja2VkKTsKIAkJaWYgKHBhY2tzLT5tICYmIG1pZHhfY29udGFpbnNfcGFjayhwYWNrcy0+bSwgZmlsZV9uYW1lKSkKIAkJCXJldHVybjsKIApAQCAtNzg1LDcgKzc4OCw3IEBACiB9CiAKIHN0YXRpYyBpbnQgd3JpdGVfbWlkeF9pbnRlcm5hbChjb25zdCBjaGFyICpvYmplY3RfZGlyLCBzdHJ1Y3QgbXVsdGlfcGFja19pbmRleCAqbSwKLQkJCSAgICAgICBzdHJ1Y3Qgc3RyaW5nX2xpc3QgKnBhY2tzX3RvX2Ryb3ApCisJCQkgICAgICAgc3RydWN0IHN0cmluZ19saXN0ICpwYWNrc190b19kcm9wLCB1bnNpZ25lZCBmbGFncykKIHsKIAl1bnNpZ25lZCBjaGFyIGN1cl9jaHVuaywgbnVtX2NodW5rcyA9IDA7CiAJY2hhciAqbWlkeF9uYW1lOwpAQCAtNzk5LDYgKzgwMiw3IEBACiAJdWludDY0X3QgY2h1bmtfb2Zmc2V0c1tNSURYX01BWF9DSFVOS1MgKyAxXTsKIAl1aW50MzJfdCBucl9lbnRyaWVzLCBudW1fbGFyZ2Vfb2Zmc2V0cyA9IDA7CiAJc3RydWN0IHBhY2tfbWlkeF9lbnRyeSAqZW50cmllcyA9IE5VTEw7CisJc3RydWN0IHByb2dyZXNzICpwcm9ncmVzcyA9IE5VTEw7CiAJaW50IGxhcmdlX29mZnNldHNfbmVlZGVkID0gMDsKIAlpbnQgcGFja19uYW1lX2NvbmNhdF9sZW4gPSAwOwogCWludCBkcm9wcGVkX3BhY2tzID0gMDsKQEAgLTgzMyw3ICs4MzcsMTQgQEAKIAkJfQogCX0KIAorCXBhY2tzLnBhY2tfcGF0aHNfY2hlY2tlZCA9IDA7CisJaWYgKGZsYWdzICYgTUlEWF9QUk9HUkVTUykKKwkJcGFja3MucHJvZ3Jlc3MgPSBzdGFydF9wcm9ncmVzcyhfKCJBZGRpbmcgcGFja2ZpbGVzIHRvIG11bHRpLXBhY2staW5kZXgiKSwgMCk7CisJZWxzZQorCQlwYWNrcy5wcm9ncmVzcyA9IE5VTEw7CisKIAlmb3JfZWFjaF9maWxlX2luX3BhY2tfZGlyKG9iamVjdF9kaXIsIGFkZF9wYWNrX3RvX21pZHgsICZwYWNrcyk7CisJc3RvcF9wcm9ncmVzcygmcGFja3MucHJvZ3Jlc3MpOwogCiAJaWYgKHBhY2tzLm0gJiYgcGFja3MubnIgPT0gcGFja3MubS0+bnVtX3BhY2tzICYmICFwYWNrc190b19kcm9wKQogCQlnb3RvIGNsZWFudXA7CkBAIC05NTgsNiArOTY5LDkgQEAKIAkJd3JpdHRlbiArPSBNSURYX0NIVU5LTE9PS1VQX1dJRFRIOwogCX0KIAorCWlmIChmbGFncyAmIE1JRFhfUFJPR1JFU1MpCisJCXByb2dyZXNzID0gc3RhcnRfcHJvZ3Jlc3MoXygiV3JpdGluZyBjaHVua3MgdG8gbXVsdGktcGFjay1pbmRleCIpLAorCQkJCQkgIG51bV9jaHVua3MpOwogCWZvciAoaSA9IDA7IGkgPCBudW1fY2h1bmtzOyBpKyspIHsKIAkJaWYgKHdyaXR0ZW4gIT0gY2h1bmtfb2Zmc2V0c1tpXSkKIAkJCUJVRygiaW5jb3JyZWN0IGNodW5rIG9mZnNldCAoJSJQUkl1NjQiICE9ICUiUFJJdTY0IikgZm9yIGNodW5rIGlkICUiUFJJeDMyLApAQCAtOTkwLDcgKzEwMDQsMTAgQEAKIAkJCQlCVUcoInRyeWluZyB0byB3cml0ZSB1bmtub3duIGNodW5rIGlkICUiUFJJeDMyLAogCQkJCSAgICBjaHVua19pZHNbaV0pOwogCQl9CisKKwkJZGlzcGxheV9wcm9ncmVzcyhwcm9ncmVzcywgaSArIDEpOwogCX0KKwlzdG9wX3Byb2dyZXNzKCZwcm9ncmVzcyk7CiAKIAlpZiAod3JpdHRlbiAhPSBjaHVua19vZmZzZXRzW251bV9jaHVua3NdKQogCQlCVUcoImluY29ycmVjdCBmaW5hbCBvZmZzZXQgJSJQUkl1NjQiICE9ICUiUFJJdTY0LApAQCAtMTAxNiw5ICsxMDMzLDkgQEAKIAlyZXR1cm4gcmVzdWx0OwogfQogCi1pbnQgd3JpdGVfbWlkeF9maWxlKGNvbnN0IGNoYXIgKm9iamVjdF9kaXIpCitpbnQgd3JpdGVfbWlkeF9maWxlKGNvbnN0IGNoYXIgKm9iamVjdF9kaXIsIHVuc2lnbmVkIGZsYWdzKQogewotCXJldHVybiB3cml0ZV9taWR4X2ludGVybmFsKG9iamVjdF9kaXIsIE5VTEwsIE5VTEwpOworCXJldHVybiB3cml0ZV9taWR4X2ludGVybmFsKG9iamVjdF9kaXIsIE5VTEwsIE5VTEwsIGZsYWdzKTsKIH0KIAogdm9pZCBjbGVhcl9taWR4X2ZpbGUoc3RydWN0IHJlcG9zaXRvcnkgKnIpCkBAIC0xMDc2LDE5ICsxMDkzLDIwIEBACiAJCQlkaXNwbGF5X3Byb2dyZXNzKHByb2dyZXNzLCBfbik7IFwKIAl9IHdoaWxlICgwKQogCi1pbnQgdmVyaWZ5X21pZHhfZmlsZShzdHJ1Y3QgcmVwb3NpdG9yeSAqciwgY29uc3QgY2hhciAqb2JqZWN0X2RpcikKK2ludCB2ZXJpZnlfbWlkeF9maWxlKHN0cnVjdCByZXBvc2l0b3J5ICpyLCBjb25zdCBjaGFyICpvYmplY3RfZGlyLCB1bnNpZ25lZCBmbGFncykKIHsKIAlzdHJ1Y3QgcGFpcl9wb3NfdnNfaWQgKnBhaXJzID0gTlVMTDsKIAl1aW50MzJfdCBpOwotCXN0cnVjdCBwcm9ncmVzcyAqcHJvZ3Jlc3M7CisJc3RydWN0IHByb2dyZXNzICpwcm9ncmVzcyA9IE5VTEw7CiAJc3RydWN0IG11bHRpX3BhY2tfaW5kZXggKm0gPSBsb2FkX211bHRpX3BhY2tfaW5kZXgob2JqZWN0X2RpciwgMSk7CiAJdmVyaWZ5X21pZHhfZXJyb3IgPSAwOwogCiAJaWYgKCFtKQogCQlyZXR1cm4gMDsKIAotCXByb2dyZXNzID0gc3RhcnRfcHJvZ3Jlc3MoXygiTG9va2luZyBmb3IgcmVmZXJlbmNlZCBwYWNrZmlsZXMiKSwKLQkJCQkgIG0tPm51bV9wYWNrcyk7CisJaWYgKGZsYWdzICYgTUlEWF9QUk9HUkVTUykKKwkJcHJvZ3Jlc3MgPSBzdGFydF9wcm9ncmVzcyhfKCJMb29raW5nIGZvciByZWZlcmVuY2VkIHBhY2tmaWxlcyIpLAorCQkJCQkgIG0tPm51bV9wYWNrcyk7CiAJZm9yIChpID0gMDsgaSA8IG0tPm51bV9wYWNrczsgaSsrKSB7CiAJCWlmIChwcmVwYXJlX21pZHhfcGFjayhyLCBtLCBpKSkKIAkJCW1pZHhfcmVwb3J0KCJmYWlsZWQgdG8gbG9hZCBwYWNrIGluIHBvc2l0aW9uICVkIiwgaSk7CkBAIC0xMTA2LDggKzExMjQsOSBAQAogCQkJCSAgICBpLCBvaWRfZmFub3V0MSwgb2lkX2Zhbm91dDIsIGkgKyAxKTsKIAl9CiAKLQlwcm9ncmVzcyA9IHN0YXJ0X3NwYXJzZV9wcm9ncmVzcyhfKCJWZXJpZnlpbmcgT0lEIG9yZGVyIGluIE1JRFgiKSwKLQkJCQkJIG0tPm51bV9vYmplY3RzIC0gMSk7CisJaWYgKGZsYWdzICYgTUlEWF9QUk9HUkVTUykKKwkJcHJvZ3Jlc3MgPSBzdGFydF9zcGFyc2VfcHJvZ3Jlc3MoXygiVmVyaWZ5aW5nIE9JRCBvcmRlciBpbiBtdWx0aS1wYWNrLWluZGV4IiksCisJCQkJCQkgbS0+bnVtX29iamVjdHMgLSAxKTsKIAlmb3IgKGkgPSAwOyBpIDwgbS0+bnVtX29iamVjdHMgLSAxOyBpKyspIHsKIAkJc3RydWN0IG9iamVjdF9pZCBvaWQxLCBvaWQyOwogCkBAIC0xMTM0LDEzICsxMTUzLDE1IEBACiAJCXBhaXJzW2ldLnBhY2tfaW50X2lkID0gbnRoX21pZHhlZF9wYWNrX2ludF9pZChtLCBpKTsKIAl9CiAKLQlwcm9ncmVzcyA9IHN0YXJ0X3NwYXJzZV9wcm9ncmVzcyhfKCJTb3J0aW5nIG9iamVjdHMgYnkgcGFja2ZpbGUiKSwKLQkJCQkJIG0tPm51bV9vYmplY3RzKTsKKwlpZiAoZmxhZ3MgJiBNSURYX1BST0dSRVNTKQorCQlwcm9ncmVzcyA9IHN0YXJ0X3NwYXJzZV9wcm9ncmVzcyhfKCJTb3J0aW5nIG9iamVjdHMgYnkgcGFja2ZpbGUiKSwKKwkJCQkJCSBtLT5udW1fb2JqZWN0cyk7CiAJZGlzcGxheV9wcm9ncmVzcyhwcm9ncmVzcywgMCk7IC8qIFRPRE86IE1lYXN1cmUgUVNPUlQoKSBwcm9ncmVzcyAqLwogCVFTT1JUKHBhaXJzLCBtLT5udW1fb2JqZWN0cywgY29tcGFyZV9wYWlyX3Bvc192c19pZCk7CiAJc3RvcF9wcm9ncmVzcygmcHJvZ3Jlc3MpOwogCi0JcHJvZ3Jlc3MgPSBzdGFydF9zcGFyc2VfcHJvZ3Jlc3MoXygiVmVyaWZ5aW5nIG9iamVjdCBvZmZzZXRzIiksIG0tPm51bV9vYmplY3RzKTsKKwlpZiAoZmxhZ3MgJiBNSURYX1BST0dSRVNTKQorCQlwcm9ncmVzcyA9IHN0YXJ0X3NwYXJzZV9wcm9ncmVzcyhfKCJWZXJpZnlpbmcgb2JqZWN0IG9mZnNldHMiKSwgbS0+bnVtX29iamVjdHMpOwogCWZvciAoaSA9IDA7IGkgPCBtLT5udW1fb2JqZWN0czsgaSsrKSB7CiAJCXN0cnVjdCBvYmplY3RfaWQgb2lkOwogCQlzdHJ1Y3QgcGFja19lbnRyeSBlOwpAQCAtMTE4MywyMyArMTIwNCwzNCBAQAogCXJldHVybiB2ZXJpZnlfbWlkeF9lcnJvcjsKIH0KIAotaW50IGV4cGlyZV9taWR4X3BhY2tzKHN0cnVjdCByZXBvc2l0b3J5ICpyLCBjb25zdCBjaGFyICpvYmplY3RfZGlyKQoraW50IGV4cGlyZV9taWR4X3BhY2tzKHN0cnVjdCByZXBvc2l0b3J5ICpyLCBjb25zdCBjaGFyICpvYmplY3RfZGlyLCB1bnNpZ25lZCBmbGFncykKIHsKIAl1aW50MzJfdCBpLCAqY291bnQsIHJlc3VsdCA9IDA7CiAJc3RydWN0IHN0cmluZ19saXN0IHBhY2tzX3RvX2Ryb3AgPSBTVFJJTkdfTElTVF9JTklUX0RVUDsKIAlzdHJ1Y3QgbXVsdGlfcGFja19pbmRleCAqbSA9IGxvYWRfbXVsdGlfcGFja19pbmRleChvYmplY3RfZGlyLCAxKTsKKwlzdHJ1Y3QgcHJvZ3Jlc3MgKnByb2dyZXNzID0gTlVMTDsKIAogCWlmICghbSkKIAkJcmV0dXJuIDA7CiAKIAljb3VudCA9IHhjYWxsb2MobS0+bnVtX3BhY2tzLCBzaXplb2YodWludDMyX3QpKTsKKworCWlmIChmbGFncyAmIE1JRFhfUFJPR1JFU1MpCisJCXByb2dyZXNzID0gc3RhcnRfcHJvZ3Jlc3MoXygiQ291bnRpbmcgcmVmZXJlbmNlZCBvYmplY3RzIiksCisJCQkJCSAgbS0+bnVtX29iamVjdHMpOwogCWZvciAoaSA9IDA7IGkgPCBtLT5udW1fb2JqZWN0czsgaSsrKSB7CiAJCWludCBwYWNrX2ludF9pZCA9IG50aF9taWR4ZWRfcGFja19pbnRfaWQobSwgaSk7CiAJCWNvdW50W3BhY2tfaW50X2lkXSsrOworCQlkaXNwbGF5X3Byb2dyZXNzKHByb2dyZXNzLCBpICsgMSk7CiAJfQorCXN0b3BfcHJvZ3Jlc3MoJnByb2dyZXNzKTsKIAorCWlmIChmbGFncyAmIE1JRFhfUFJPR1JFU1MpCisJCXByb2dyZXNzID0gc3RhcnRfcHJvZ3Jlc3MoXygiRmluZGluZyBhbmQgZGVsZXRpbmcgdW5yZWZlcmVuY2VkIHBhY2tmaWxlcyIpLAorCQkJCQkgIG0tPm51bV9wYWNrcyk7CiAJZm9yIChpID0gMDsgaSA8IG0tPm51bV9wYWNrczsgaSsrKSB7CiAJCWNoYXIgKnBhY2tfbmFtZTsKKwkJZGlzcGxheV9wcm9ncmVzcyhwcm9ncmVzcywgaSArIDEpOwogCiAJCWlmIChjb3VudFtpXSkKIAkJCWNvbnRpbnVlOwpAQCAtMTIxNywxMSArMTI0OSwxMiBAQAogCQl1bmxpbmtfcGFja19wYXRoKHBhY2tfbmFtZSwgMCk7CiAJCWZyZWUocGFja19uYW1lKTsKIAl9CisJc3RvcF9wcm9ncmVzcygmcHJvZ3Jlc3MpOwogCiAJZnJlZShjb3VudCk7CiAKIAlpZiAocGFja3NfdG9fZHJvcC5ucikKLQkJcmVzdWx0ID0gd3JpdGVfbWlkeF9pbnRlcm5hbChvYmplY3RfZGlyLCBtLCAmcGFja3NfdG9fZHJvcCk7CisJCXJlc3VsdCA9IHdyaXRlX21pZHhfaW50ZXJuYWwob2JqZWN0X2RpciwgbSwgJnBhY2tzX3RvX2Ryb3AsIGZsYWdzKTsKIAogCXN0cmluZ19saXN0X2NsZWFyKCZwYWNrc190b19kcm9wLCAwKTsKIAlyZXR1cm4gcmVzdWx0OwpAQCAtMTMxNSw3ICsxMzQ4LDcgQEAKIAlyZXR1cm4gMDsKIH0KIAotaW50IG1pZHhfcmVwYWNrKHN0cnVjdCByZXBvc2l0b3J5ICpyLCBjb25zdCBjaGFyICpvYmplY3RfZGlyLCBzaXplX3QgYmF0Y2hfc2l6ZSkKK2ludCBtaWR4X3JlcGFjayhzdHJ1Y3QgcmVwb3NpdG9yeSAqciwgY29uc3QgY2hhciAqb2JqZWN0X2Rpciwgc2l6ZV90IGJhdGNoX3NpemUsIHVuc2lnbmVkIGZsYWdzKQogewogCWludCByZXN1bHQgPSAwOwogCXVpbnQzMl90IGk7CkBAIC0xMzQwLDYgKzEzNzMsMTIgQEAKIAlzdHJidWZfYWRkc3RyKCZiYXNlX25hbWUsIG9iamVjdF9kaXIpOwogCXN0cmJ1Zl9hZGRzdHIoJmJhc2VfbmFtZSwgIi9wYWNrL3BhY2siKTsKIAlhcmd2X2FycmF5X3B1c2goJmNtZC5hcmdzLCBiYXNlX25hbWUuYnVmKTsKKworCWlmIChmbGFncyAmIE1JRFhfUFJPR1JFU1MpCisJCWFyZ3ZfYXJyYXlfcHVzaCgmY21kLmFyZ3MsICItLXByb2dyZXNzIik7CisJZWxzZQorCQlhcmd2X2FycmF5X3B1c2goJmNtZC5hcmdzLCAiLXEiKTsKKwogCXN0cmJ1Zl9yZWxlYXNlKCZiYXNlX25hbWUpOwogCiAJY21kLmdpdF9jbWQgPSAxOwpAQCAtMTM3MCw3ICsxNDA5LDcgQEAKIAkJZ290byBjbGVhbnVwOwogCX0KIAotCXJlc3VsdCA9IHdyaXRlX21pZHhfaW50ZXJuYWwob2JqZWN0X2RpciwgbSwgTlVMTCk7CisJcmVzdWx0ID0gd3JpdGVfbWlkeF9pbnRlcm5hbChvYmplY3RfZGlyLCBtLCBOVUxMLCBmbGFncyk7CiAJbSA9IE5VTEw7CiAKIGNsZWFudXA6CmRpZmYgLS1naXQgYS9taWR4LmggYi9taWR4LmgKaW5kZXggZjBhZTY1Ni4uZTZmYTM1NiAxMDA2NDQKLS0tIGEvbWlkeC5oCisrKyBiL21pZHguaApAQCAtMzcsNiArMzcsOCBAQAogCWNoYXIgb2JqZWN0X2RpcltGTEVYX0FSUkFZXTsKIH07CiAKKyNkZWZpbmUgTUlEWF9QUk9HUkVTUyAgICAgKDEgPDwgMCkKKwogc3RydWN0IG11bHRpX3BhY2tfaW5kZXggKmxvYWRfbXVsdGlfcGFja19pbmRleChjb25zdCBjaGFyICpvYmplY3RfZGlyLCBpbnQgbG9jYWwpOwogaW50IHByZXBhcmVfbWlkeF9wYWNrKHN0cnVjdCByZXBvc2l0b3J5ICpyLCBzdHJ1Y3QgbXVsdGlfcGFja19pbmRleCAqbSwgdWludDMyX3QgcGFja19pbnRfaWQpOwogaW50IGJzZWFyY2hfbWlkeChjb25zdCBzdHJ1Y3Qgb2JqZWN0X2lkICpvaWQsIHN0cnVjdCBtdWx0aV9wYWNrX2luZGV4ICptLCB1aW50MzJfdCAqcmVzdWx0KTsKQEAgLTQ3LDExICs0OSwxMSBAQAogaW50IG1pZHhfY29udGFpbnNfcGFjayhzdHJ1Y3QgbXVsdGlfcGFja19pbmRleCAqbSwgY29uc3QgY2hhciAqaWR4X29yX3BhY2tfbmFtZSk7CiBpbnQgcHJlcGFyZV9tdWx0aV9wYWNrX2luZGV4X29uZShzdHJ1Y3QgcmVwb3NpdG9yeSAqciwgY29uc3QgY2hhciAqb2JqZWN0X2RpciwgaW50IGxvY2FsKTsKIAotaW50IHdyaXRlX21pZHhfZmlsZShjb25zdCBjaGFyICpvYmplY3RfZGlyKTsKK2ludCB3cml0ZV9taWR4X2ZpbGUoY29uc3QgY2hhciAqb2JqZWN0X2RpciwgdW5zaWduZWQgZmxhZ3MpOwogdm9pZCBjbGVhcl9taWR4X2ZpbGUoc3RydWN0IHJlcG9zaXRvcnkgKnIpOwotaW50IHZlcmlmeV9taWR4X2ZpbGUoc3RydWN0IHJlcG9zaXRvcnkgKnIsIGNvbnN0IGNoYXIgKm9iamVjdF9kaXIpOwotaW50IGV4cGlyZV9taWR4X3BhY2tzKHN0cnVjdCByZXBvc2l0b3J5ICpyLCBjb25zdCBjaGFyICpvYmplY3RfZGlyKTsKLWludCBtaWR4X3JlcGFjayhzdHJ1Y3QgcmVwb3NpdG9yeSAqciwgY29uc3QgY2hhciAqb2JqZWN0X2Rpciwgc2l6ZV90IGJhdGNoX3NpemUpOworaW50IHZlcmlmeV9taWR4X2ZpbGUoc3RydWN0IHJlcG9zaXRvcnkgKnIsIGNvbnN0IGNoYXIgKm9iamVjdF9kaXIsIHVuc2lnbmVkIGZsYWdzKTsKK2ludCBleHBpcmVfbWlkeF9wYWNrcyhzdHJ1Y3QgcmVwb3NpdG9yeSAqciwgY29uc3QgY2hhciAqb2JqZWN0X2RpciwgdW5zaWduZWQgZmxhZ3MpOworaW50IG1pZHhfcmVwYWNrKHN0cnVjdCByZXBvc2l0b3J5ICpyLCBjb25zdCBjaGFyICpvYmplY3RfZGlyLCBzaXplX3QgYmF0Y2hfc2l6ZSwgdW5zaWduZWQgZmxhZ3MpOwogCiB2b2lkIGNsb3NlX21pZHgoc3RydWN0IG11bHRpX3BhY2tfaW5kZXggKm0pOwogCmRpZmYgLS1naXQgYS9uYW1lLWhhc2guYyBiL25hbWUtaGFzaC5jCmluZGV4IGNlYjFkN2IuLmZiNTI2YTMgMTAwNjQ0Ci0tLSBhL25hbWUtaGFzaC5jCisrKyBiL25hbWUtaGFzaC5jCkBAIC0xMzgsNyArMTM4LDcgQEAKIAogLyoKICAqIFNldCBhIG1pbmltdW0gbnVtYmVyIG9mIGNhY2hlX2VudHJpZXMgdGhhdCB3ZSB3aWxsIGhhbmRsZSBwZXIKLSAqIHRocmVhZCBhbmQgdXNlIHRoYXQgdG8gZGVjaWRlIGhvdyBtYW55IHRocmVhZHMgdG8gcnVuICh1cHRvCisgKiB0aHJlYWQgYW5kIHVzZSB0aGF0IHRvIGRlY2lkZSBob3cgbWFueSB0aHJlYWRzIHRvIHJ1biAodXAgdG8KICAqIHRoZSBudW1iZXIgb24gdGhlIHN5c3RlbSkuCiAgKgogICogRm9yIGd1aWRhbmNlIHNldHRpbmcgdGhlIGxvd2VyIHBlci10aHJlYWQgYm91bmQsIHNlZToKQEAgLTIxOCw3ICsyMTgsNyBAQAogICogSG93ZXZlciwgdGhlIGhhc2htYXAgaXMgZ29pbmcgdG8gcHV0IGl0ZW1zIGludG8gYnVja2V0CiAgKiBjaGFpbnMgYmFzZWQgb24gdGhlaXIgaGFzaCB2YWx1ZXMuICBVc2UgdGhhdCB0byBjcmVhdGUgbgogICogbXV0ZXhlcyBhbmQgbG9jayBvbiBtdXRleFtidWNrZXQoaGFzaCkgJSBuXS4gIFRoaXMgd2lsbAotICogZGVjcmVhc2UgdGhlIGNvbGxpc2lvbiByYXRlIGJ5IChob3BlZnVsbHkpIGJ5IGEgZmFjdG9yIG9mIG4uCisgKiBkZWNyZWFzZSB0aGUgY29sbGlzaW9uIHJhdGUgYnkgKGhvcGVmdWxseSkgYSBmYWN0b3Igb2Ygbi4KICAqLwogc3RhdGljIHZvaWQgaW5pdF9kaXJfbXV0ZXgodm9pZCkKIHsKZGlmZiAtLWdpdCBhL29iamVjdC5oIGIvb2JqZWN0LmgKaW5kZXggMDEyMDg5Mi4uMjVmNWFiMyAxMDA2NDQKLS0tIGEvb2JqZWN0LmgKKysrIGIvb2JqZWN0LmgKQEAgLTY4LDcgKzY4LDggQEAKICAqIGJpc2VjdC5jOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNgogICogYnVuZGxlLmM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2CiAgKiBodHRwLXB1c2guYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtLS0tLTE5Ci0gKiBjb21taXQtcmVhY2guYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1LS0tLS0tLTE5CisgKiBjb21taXQtZ3JhcGguYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE1CisgKiBjb21taXQtcmVhY2guYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtLS0tLTE5CiAgKiBzaGExLW5hbWUuYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjAKICAqIGxpc3Qtb2JqZWN0cy1maWx0ZXIuYzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxCiAgKiBidWlsdGluL2ZzY2suYzogICAgICAgICAgIDAtLTMKZGlmZiAtLWdpdCBhL3BhY2stb2JqZWN0cy5jIGIvcGFjay1vYmplY3RzLmMKaW5kZXggYzYyNTBkNy4uNWU1YTNjNiAxMDA2NDQKLS0tIGEvcGFjay1vYmplY3RzLmMKKysrIGIvcGFjay1vYmplY3RzLmMKQEAgLTExOSw3ICsxMTksMTAgQEAKIHsKIAl1aW50MzJfdCBpOwogCi0JUkVBTExPQ19BUlJBWShwYWNrLT5pbl9wYWNrLCBwYWNrLT5ucl9hbGxvYyk7CisJaWYgKHBhY2stPmluX3BhY2spCisJCUJVRygicGFja2luZ19kYXRhIGhhcyBhbHJlYWR5IGJlZW4gY29udmVydGVkIHRvIHBhY2sgYXJyYXkiKTsKKworCUFMTE9DX0FSUkFZKHBhY2stPmluX3BhY2ssIHBhY2stPm5yX2FsbG9jKTsKIAogCWZvciAoaSA9IDA7IGkgPCBwYWNrLT5ucl9vYmplY3RzOyBpKyspCiAJCXBhY2stPmluX3BhY2tbaV0gPSBvZV9pbl9wYWNrKHBhY2ssIHBhY2stPm9iamVjdHMgKyBpKTsKZGlmZiAtLWdpdCBhL3BhY2stb2JqZWN0cy5oIGIvcGFjay1vYmplY3RzLmgKaW5kZXggNmZlNmFlNS4uZDM5NzVlMCAxMDA2NDQKLS0tIGEvcGFjay1vYmplY3RzLmgKKysrIGIvcGFjay1vYmplY3RzLmgKQEAgLTI1MSwxMiArMjUxLDIxIEBACiAJCQkJICBzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICplLAogCQkJCSAgc3RydWN0IHBhY2tlZF9naXQgKnApCiB7Ci0JaWYgKCFwLT5pbmRleCkKKwlpZiAocGFjay0+aW5fcGFja19ieV9pZHgpIHsKKwkJaWYgKHAtPmluZGV4KSB7CisJCQllLT5pbl9wYWNrX2lkeCA9IHAtPmluZGV4OworCQkJcmV0dXJuOworCQl9CisJCS8qCisJCSAqIFdlJ3JlIGFjY2Vzc2luZyBwYWNrcyBieSBpbmRleCwgYnV0IHRoaXMgcGFjayBkb2Vzbid0IGhhdmUKKwkJICogYW4gaW5kZXggKGUuZy4sIGJlY2F1c2UgaXQgd2FzIGFkZGVkIHNpbmNlIHdlIGNyZWF0ZWQgdGhlCisJCSAqIGluX3BhY2tfYnlfaWR4IGFycmF5KS4gQmFpbCB0byBvZV9tYXBfbmV3X3BhY2soKSwgd2hpY2gKKwkJICogd2lsbCBjb252ZXJ0IHVzIHRvIHVzaW5nIHRoZSBmdWxsIGluX3BhY2sgYXJyYXksIGFuZCB0aGVuCisJCSAqIGZhbGwgdGhyb3VnaCB0byBvdXIgaW5fcGFjayBoYW5kbGluZy4KKwkJICovCiAJCW9lX21hcF9uZXdfcGFjayhwYWNrKTsKLQlpZiAocGFjay0+aW5fcGFja19ieV9pZHgpCi0JCWUtPmluX3BhY2tfaWR4ID0gcC0+aW5kZXg7Ci0JZWxzZQotCQlwYWNrLT5pbl9wYWNrW2UgLSBwYWNrLT5vYmplY3RzXSA9IHA7CisJfQorCXBhY2stPmluX3BhY2tbZSAtIHBhY2stPm9iamVjdHNdID0gcDsKIH0KIAogc3RhdGljIGlubGluZSBzdHJ1Y3Qgb2JqZWN0X2VudHJ5ICpvZV9kZWx0YSgKZGlmZiAtLWdpdCBhL3BhcnNlLW9wdGlvbnMuYyBiL3BhcnNlLW9wdGlvbnMuYwppbmRleCBiNDJmNTRkLi42MGZhZTNhIDEwMDY0NAotLS0gYS9wYXJzZS1vcHRpb25zLmMKKysrIGIvcGFyc2Utb3B0aW9ucy5jCkBAIC02MjMsNyArNjIzLDcgQEAKICAqIFNjYW4gYW5kIG1heSBwcm9kdWNlIGEgbmV3IG9wdGlvbltdIGFycmF5LCB3aGljaCBzaG91bGQgYmUgdXNlZAogICogaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgJ29wdGlvbnMnLgogICoKLSAqIFJpZ2h0IG5vdyB0aGlzIGlzIG9ubHkgdXNlZCB0byBwcmVwcm9jZXNzIGFuZCBzdWJzdGl0dWUKKyAqIFJpZ2h0IG5vdyB0aGlzIGlzIG9ubHkgdXNlZCB0byBwcmVwcm9jZXNzIGFuZCBzdWJzdGl0dXRlCiAgKiBPUFRJT05fQUxJQVMuCiAgKi8KIHN0YXRpYyBzdHJ1Y3Qgb3B0aW9uICpwcmVwcm9jZXNzX29wdGlvbnMoc3RydWN0IHBhcnNlX29wdF9jdHhfdCAqY3R4LApkaWZmIC0tZ2l0IGEvcGF0aC5jIGIvcGF0aC5jCmluZGV4IGUzZGExZjMuLjA2MDcxNTYgMTAwNjQ0Ci0tLSBhL3BhdGguYworKysgYi9wYXRoLmMKQEAgLTExLDYgKzExLDcgQEAKICNpbmNsdWRlICJwYXRoLmgiCiAjaW5jbHVkZSAicGFja2ZpbGUuaCIKICNpbmNsdWRlICJvYmplY3Qtc3RvcmUuaCIKKyNpbmNsdWRlICJsb2NrZmlsZS5oIgogCiBzdGF0aWMgaW50IGdldF9zdF9tb2RlX2JpdHMoY29uc3QgY2hhciAqcGF0aCwgaW50ICptb2RlKQogewpAQCAtMTAxLDM2ICsxMDIsMzYgQEAKIAkvKiBOb3QgY29uc2lkZXJlZCBnYXJiYWdlIGZvciByZXBvcnRfbGlua2VkX2NoZWNrb3V0X2dhcmJhZ2UgKi8KIAl1bnNpZ25lZCBpZ25vcmVfZ2FyYmFnZToxOwogCXVuc2lnbmVkIGlzX2RpcjoxOwotCS8qIE5vdCBjb21tb24gZXZlbiB0aG91Z2ggaXRzIHBhcmVudCBpcyAqLwotCXVuc2lnbmVkIGV4Y2x1ZGU6MTsKLQljb25zdCBjaGFyICpkaXJuYW1lOworCS8qIEJlbG9uZ3MgdG8gdGhlIGNvbW1vbiBkaXIsIHRob3VnaCBpdCBtYXkgY29udGFpbiBwYXRocyB0aGF0IGRvbid0ICovCisJdW5zaWduZWQgaXNfY29tbW9uOjE7CisJY29uc3QgY2hhciAqcGF0aDsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgY29tbW9uX2RpciBjb21tb25fbGlzdFtdID0gewotCXsgMCwgMSwgMCwgImJyYW5jaGVzIiB9LAotCXsgMCwgMSwgMCwgImNvbW1vbiIgfSwKLQl7IDAsIDEsIDAsICJob29rcyIgfSwKLQl7IDAsIDEsIDAsICJpbmZvIiB9LAotCXsgMCwgMCwgMSwgImluZm8vc3BhcnNlLWNoZWNrb3V0IiB9LAotCXsgMSwgMSwgMCwgImxvZ3MiIH0sCi0JeyAxLCAxLCAxLCAibG9ncy9IRUFEIiB9LAotCXsgMCwgMSwgMSwgImxvZ3MvcmVmcy9iaXNlY3QiIH0sCi0JeyAwLCAxLCAxLCAibG9ncy9yZWZzL3Jld3JpdHRlbiIgfSwKLQl7IDAsIDEsIDEsICJsb2dzL3JlZnMvd29ya3RyZWUiIH0sCi0JeyAwLCAxLCAwLCAibG9zdC1mb3VuZCIgfSwKLQl7IDAsIDEsIDAsICJvYmplY3RzIiB9LAotCXsgMCwgMSwgMCwgInJlZnMiIH0sCi0JeyAwLCAxLCAxLCAicmVmcy9iaXNlY3QiIH0sCi0JeyAwLCAxLCAxLCAicmVmcy9yZXdyaXR0ZW4iIH0sCi0JeyAwLCAxLCAxLCAicmVmcy93b3JrdHJlZSIgfSwKLQl7IDAsIDEsIDAsICJyZW1vdGVzIiB9LAotCXsgMCwgMSwgMCwgIndvcmt0cmVlcyIgfSwKLQl7IDAsIDEsIDAsICJyci1jYWNoZSIgfSwKLQl7IDAsIDEsIDAsICJzdm4iIH0sCi0JeyAwLCAwLCAwLCAiY29uZmlnIiB9LAotCXsgMSwgMCwgMCwgImdjLnBpZCIgfSwKLQl7IDAsIDAsIDAsICJwYWNrZWQtcmVmcyIgfSwKLQl7IDAsIDAsIDAsICJzaGFsbG93IiB9LAorCXsgMCwgMSwgMSwgImJyYW5jaGVzIiB9LAorCXsgMCwgMSwgMSwgImNvbW1vbiIgfSwKKwl7IDAsIDEsIDEsICJob29rcyIgfSwKKwl7IDAsIDEsIDEsICJpbmZvIiB9LAorCXsgMCwgMCwgMCwgImluZm8vc3BhcnNlLWNoZWNrb3V0IiB9LAorCXsgMSwgMSwgMSwgImxvZ3MiIH0sCisJeyAxLCAwLCAwLCAibG9ncy9IRUFEIiB9LAorCXsgMCwgMSwgMCwgImxvZ3MvcmVmcy9iaXNlY3QiIH0sCisJeyAwLCAxLCAwLCAibG9ncy9yZWZzL3Jld3JpdHRlbiIgfSwKKwl7IDAsIDEsIDAsICJsb2dzL3JlZnMvd29ya3RyZWUiIH0sCisJeyAwLCAxLCAxLCAibG9zdC1mb3VuZCIgfSwKKwl7IDAsIDEsIDEsICJvYmplY3RzIiB9LAorCXsgMCwgMSwgMSwgInJlZnMiIH0sCisJeyAwLCAxLCAwLCAicmVmcy9iaXNlY3QiIH0sCisJeyAwLCAxLCAwLCAicmVmcy9yZXdyaXR0ZW4iIH0sCisJeyAwLCAxLCAwLCAicmVmcy93b3JrdHJlZSIgfSwKKwl7IDAsIDEsIDEsICJyZW1vdGVzIiB9LAorCXsgMCwgMSwgMSwgIndvcmt0cmVlcyIgfSwKKwl7IDAsIDEsIDEsICJyci1jYWNoZSIgfSwKKwl7IDAsIDEsIDEsICJzdm4iIH0sCisJeyAwLCAwLCAxLCAiY29uZmlnIiB9LAorCXsgMSwgMCwgMSwgImdjLnBpZCIgfSwKKwl7IDAsIDAsIDEsICJwYWNrZWQtcmVmcyIgfSwKKwl7IDAsIDAsIDEsICJzaGFsbG93IiB9LAogCXsgMCwgMCwgMCwgTlVMTCB9CiB9OwogCkBAIC0yMzYsMzAgKzIzNyw0MSBAQAogCXJldHVybiBvbGQ7CiB9CiAKLXR5cGVkZWYgaW50ICgqbWF0Y2hfZm4pKGNvbnN0IGNoYXIgKnVubWF0Y2hlZCwgdm9pZCAqZGF0YSwgdm9pZCAqYmF0b24pOwordHlwZWRlZiBpbnQgKCptYXRjaF9mbikoY29uc3QgY2hhciAqdW5tYXRjaGVkLCB2b2lkICp2YWx1ZSwgdm9pZCAqYmF0b24pOwogCiAvKgogICogU2VhcmNoIGEgdHJpZSBmb3Igc29tZSBrZXkuICBGaW5kIHRoZSBsb25nZXN0IC8tb3ItXDAtdGVybWluYXRlZAotICogcHJlZml4IG9mIHRoZSBrZXkgZm9yIHdoaWNoIHRoZSB0cmllIGNvbnRhaW5zIGEgdmFsdWUuICBDYWxsIGZuCi0gKiB3aXRoIHRoZSB1bm1hdGNoZWQgcG9ydGlvbiBvZiB0aGUga2V5IGFuZCB0aGUgZm91bmQgdmFsdWUsIGFuZAotICogcmV0dXJuIGl0cyByZXR1cm4gdmFsdWUuICBJZiB0aGVyZSBpcyBubyBzdWNoIHByZWZpeCwgcmV0dXJuIC0xLgorICogcHJlZml4IG9mIHRoZSBrZXkgZm9yIHdoaWNoIHRoZSB0cmllIGNvbnRhaW5zIGEgdmFsdWUuICBJZiB0aGVyZSBpcworICogbm8gc3VjaCBwcmVmaXgsIHJldHVybiAtMS4gIE90aGVyd2lzZSBjYWxsIGZuIHdpdGggdGhlIHVubWF0Y2hlZAorICogcG9ydGlvbiBvZiB0aGUga2V5IGFuZCB0aGUgZm91bmQgdmFsdWUuICBJZiBmbiByZXR1cm5zIDAgb3IKKyAqIHBvc2l0aXZlLCB0aGVuIHJldHVybiBpdHMgcmV0dXJuIHZhbHVlLiAgSWYgZm4gcmV0dXJucyBuZWdhdGl2ZSwKKyAqIHRoZW4gY2FsbCBmbiB3aXRoIHRoZSBuZXh0LWxvbmdlc3QgLy10ZXJtaW5hdGVkIHByZWZpeCBvZiB0aGUga2V5CisgKiAoaS5lLiBhIHBhcmVudCBkaXJlY3RvcnkpIGZvciB3aGljaCB0aGUgdHJpZSBjb250YWlucyBhIHZhbHVlLCBhbmQKKyAqIGhhbmRsZSBpdHMgcmV0dXJuIHZhbHVlIHRoZSBzYW1lIHdheS4gIElmIHRoZXJlIGlzIG5vIHNob3J0ZXIKKyAqIC8tdGVybWluYXRlZCBwcmVmaXggd2l0aCBhIHZhbHVlIGxlZnQsIHRoZW4gcmV0dXJuIHRoZSBuZWdhdGl2ZQorICogcmV0dXJuIHZhbHVlIG9mIHRoZSBtb3N0IHJlY2VudCBmbiBpbnZvY2F0aW9uLgogICoKICAqIFRoZSBrZXkgaXMgcGFydGlhbGx5IG5vcm1hbGl6ZWQ6IGNvbnNlY3V0aXZlIHNsYXNoZXMgYXJlIHNraXBwZWQuCiAgKgotICogRm9yIGV4YW1wbGUsIGNvbnNpZGVyIHRoZSB0cmllIGNvbnRhaW5pbmcgb25seSBbcmVmcywKLSAqIHJlZnMvd29ya3RyZWVdIChib3RoIHdpdGggdmFsdWVzKS4KKyAqIEZvciBleGFtcGxlLCBjb25zaWRlciB0aGUgdHJpZSBjb250YWluaW5nIG9ubHkgW2xvZ3MsCisgKiBsb2dzL3JlZnMvYmlzZWN0XSwgYm90aCB3aXRoIHZhbHVlcywgYnV0IG5vdCBsb2dzL3JlZnMuCiAgKgotICogfCBrZXkgICAgICAgICAgICAgfCB1bm1hdGNoZWQgIHwgdmFsIGZyb20gbm9kZSB8IHJldHVybiB2YWx1ZSB8Ci0gKiB8LS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLXwKLSAqIHwgYSAgICAgICAgICAgICAgIHwgbm90IGNhbGxlZCB8IG4vYSAgICAgICAgICAgfCAtMSAgICAgICAgICAgfAotICogfCByZWZzICAgICAgICAgICAgfCBcMCAgICAgICAgIHwgcmVmcyAgICAgICAgICB8IGFzIHBlciBmbiAgICB8Ci0gKiB8IHJlZnMvICAgICAgICAgICB8IC8gICAgICAgICAgfCByZWZzICAgICAgICAgIHwgYXMgcGVyIGZuICAgIHwKLSAqIHwgcmVmcy93ICAgICAgICAgIHwgL3cgICAgICAgICB8IHJlZnMgICAgICAgICAgfCBhcyBwZXIgZm4gICAgfAotICogfCByZWZzL3dvcmt0cmVlICAgfCBcMCAgICAgICAgIHwgcmVmcy93b3JrdHJlZSB8IGFzIHBlciBmbiAgICB8Ci0gKiB8IHJlZnMvd29ya3RyZWUvICB8IC8gICAgICAgICAgfCByZWZzL3dvcmt0cmVlIHwgYXMgcGVyIGZuICAgIHwKLSAqIHwgcmVmcy93b3JrdHJlZS9hIHwgL2EgICAgICAgICB8IHJlZnMvd29ya3RyZWUgfCBhcyBwZXIgZm4gICAgfAotICogfC0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS18Ci0gKgorICogfCBrZXkgICAgICAgICAgICAgICAgfCB1bm1hdGNoZWQgICAgICB8IHByZWZpeCB0byBub2RlICAgfCByZXR1cm4gdmFsdWUgfAorICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfAorICogfCBhICAgICAgICAgICAgICAgICAgfCBub3QgY2FsbGVkICAgICB8IG4vYSAgICAgICAgICAgICAgfCAtMSAgICAgICAgICAgfAorICogfCBsb2dzdG9yZSAgICAgICAgICAgfCBub3QgY2FsbGVkICAgICB8IG4vYSAgICAgICAgICAgICAgfCAtMSAgICAgICAgICAgfAorICogfCBsb2dzICAgICAgICAgICAgICAgfCBcMCAgICAgICAgICAgICB8IGxvZ3MgICAgICAgICAgICAgfCBhcyBwZXIgZm4gICAgfAorICogfCBsb2dzLyAgICAgICAgICAgICAgfCAvICAgICAgICAgICAgICB8IGxvZ3MgICAgICAgICAgICAgfCBhcyBwZXIgZm4gICAgfAorICogfCBsb2dzL3JlZnMgICAgICAgICAgfCAvcmVmcyAgICAgICAgICB8IGxvZ3MgICAgICAgICAgICAgfCBhcyBwZXIgZm4gICAgfAorICogfCBsb2dzL3JlZnMvICAgICAgICAgfCAvcmVmcy8gICAgICAgICB8IGxvZ3MgICAgICAgICAgICAgfCBhcyBwZXIgZm4gICAgfAorICogfCBsb2dzL3JlZnMvYiAgICAgICAgfCAvcmVmcy9iICAgICAgICB8IGxvZ3MgICAgICAgICAgICAgfCBhcyBwZXIgZm4gICAgfAorICogfCBsb2dzL3JlZnMvYmlzZWN0ZWQgfCAvcmVmcy9iaXNlY3RlZCB8IGxvZ3MgICAgICAgICAgICAgfCBhcyBwZXIgZm4gICAgfAorICogfCBsb2dzL3JlZnMvYmlzZWN0ICAgfCBcMCAgICAgICAgICAgICB8IGxvZ3MvcmVmcy9iaXNlY3QgfCBhcyBwZXIgZm4gICAgfAorICogfCBsb2dzL3JlZnMvYmlzZWN0LyAgfCAvICAgICAgICAgICAgICB8IGxvZ3MvcmVmcy9iaXNlY3QgfCBhcyBwZXIgZm4gICAgfAorICogfCBsb2dzL3JlZnMvYmlzZWN0L2EgfCAvYSAgICAgICAgICAgICB8IGxvZ3MvcmVmcy9iaXNlY3QgfCBhcyBwZXIgZm4gICAgfAorICogfCAoSWYgZm4gaW4gdGhlIHByZXZpb3VzIGxpbmUgcmV0dXJucyAtMSwgdGhlbiBmbiBpcyBjYWxsZWQgb25jZSBtb3JlOikgfAorICogfCBsb2dzL3JlZnMvYmlzZWN0L2EgfCAvcmVmcy9iaXNlY3QvYSB8IGxvZ3MgICAgICAgICAgICAgfCBhcyBwZXIgZm4gICAgfAorICogfC0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tfAogICovCiBzdGF0aWMgaW50IHRyaWVfZmluZChzdHJ1Y3QgdHJpZSAqcm9vdCwgY29uc3QgY2hhciAqa2V5LCBtYXRjaF9mbiBmbiwKIAkJICAgICB2b2lkICpiYXRvbikKQEAgLTI4OCw5ICszMDAsMTMgQEAKIAogCS8qIE1hdGNoZWQgdGhlIGVudGlyZSBjb21wcmVzc2VkIHNlY3Rpb24gKi8KIAlrZXkgKz0gaTsKLQlpZiAoISprZXkpCisJaWYgKCEqa2V5KSB7CiAJCS8qIEVuZCBvZiBrZXkgKi8KLQkJcmV0dXJuIGZuKGtleSwgcm9vdC0+dmFsdWUsIGJhdG9uKTsKKwkJaWYgKHJvb3QtPnZhbHVlKQorCQkJcmV0dXJuIGZuKGtleSwgcm9vdC0+dmFsdWUsIGJhdG9uKTsKKwkJZWxzZQorCQkJcmV0dXJuIC0xOworCX0KIAogCS8qIFBhcnRpYWwgcGF0aCBub3JtYWxpemF0aW9uOiBza2lwIGNvbnNlY3V0aXZlIHNsYXNoZXMgKi8KIAl3aGlsZSAoa2V5WzBdID09ICcvJyAmJiBrZXlbMV0gPT0gJy8nKQpAQCAtMzIwLDggKzMzNiw4IEBACiAJaWYgKGNvbW1vbl90cmllX2RvbmVfc2V0dXApCiAJCXJldHVybjsKIAotCWZvciAocCA9IGNvbW1vbl9saXN0OyBwLT5kaXJuYW1lOyBwKyspCi0JCWFkZF90b190cmllKCZjb21tb25fdHJpZSwgcC0+ZGlybmFtZSwgcCk7CisJZm9yIChwID0gY29tbW9uX2xpc3Q7IHAtPnBhdGg7IHArKykKKwkJYWRkX3RvX3RyaWUoJmNvbW1vbl90cmllLCBwLT5wYXRoLCBwKTsKIAogCWNvbW1vbl90cmllX2RvbmVfc2V0dXAgPSAxOwogfQpAQCAtMzM0LDE0ICszNTAsMTEgQEAKIHsKIAlzdHJ1Y3QgY29tbW9uX2RpciAqZGlyID0gdmFsdWU7CiAKLQlpZiAoIWRpcikKLQkJcmV0dXJuIDA7Ci0KIAlpZiAoZGlyLT5pc19kaXIgJiYgKHVubWF0Y2hlZFswXSA9PSAwIHx8IHVubWF0Y2hlZFswXSA9PSAnLycpKQotCQlyZXR1cm4gIWRpci0+ZXhjbHVkZTsKKwkJcmV0dXJuIGRpci0+aXNfY29tbW9uOwogCiAJaWYgKCFkaXItPmlzX2RpciAmJiB1bm1hdGNoZWRbMF0gPT0gMCkKLQkJcmV0dXJuICFkaXItPmV4Y2x1ZGU7CisJCXJldHVybiBkaXItPmlzX2NvbW1vbjsKIAogCXJldHVybiAwOwogfQpAQCAtMzUwLDkgKzM2MywxNCBAQAogCQkJICAgICAgY29uc3QgY2hhciAqY29tbW9uX2RpcikKIHsKIAljaGFyICpiYXNlID0gYnVmLT5idWYgKyBnaXRfZGlyX2xlbjsKKwlpbnQgaGFzX2xvY2tfc3VmZml4ID0gc3RyYnVmX3N0cmlwX3N1ZmZpeChidWYsIExPQ0tfU1VGRklYKTsKKwogCWluaXRfY29tbW9uX3RyaWUoKTsKIAlpZiAodHJpZV9maW5kKCZjb21tb25fdHJpZSwgYmFzZSwgY2hlY2tfY29tbW9uLCBOVUxMKSA+IDApCiAJCXJlcGxhY2VfZGlyKGJ1ZiwgZ2l0X2Rpcl9sZW4sIGNvbW1vbl9kaXIpOworCisJaWYgKGhhc19sb2NrX3N1ZmZpeCkKKwkJc3RyYnVmX2FkZHN0cihidWYsIExPQ0tfU1VGRklYKTsKIH0KIAogdm9pZCByZXBvcnRfbGlua2VkX2NoZWNrb3V0X2dhcmJhZ2Uodm9pZCkKQEAgLTM2NSw4ICszODMsOCBAQAogCQlyZXR1cm47CiAJc3RyYnVmX2FkZGYoJnNiLCAiJXMvIiwgZ2V0X2dpdF9kaXIoKSk7CiAJbGVuID0gc2IubGVuOwotCWZvciAocCA9IGNvbW1vbl9saXN0OyBwLT5kaXJuYW1lOyBwKyspIHsKLQkJY29uc3QgY2hhciAqcGF0aCA9IHAtPmRpcm5hbWU7CisJZm9yIChwID0gY29tbW9uX2xpc3Q7IHAtPnBhdGg7IHArKykgeworCQljb25zdCBjaGFyICpwYXRoID0gcC0+cGF0aDsKIAkJaWYgKHAtPmlnbm9yZV9nYXJiYWdlKQogCQkJY29udGludWU7CiAJCXN0cmJ1Zl9zZXRsZW4oJnNiLCBsZW4pOwpkaWZmIC0tZ2l0IGEvcGVybC9HaXQucG0gYi9wZXJsL0dpdC5wbQppbmRleCA2MmM0NzJlLi41NGM5ZWQwIDEwMDY0NAotLS0gYS9wZXJsL0dpdC5wbQorKysgYi9wZXJsL0dpdC5wbQpAQCAtNTYzLDcgKzU2Myw3IEBACiBRdWVyeSB1c2VyIEM8UFJPTVBUPiBhbmQgcmV0dXJuIGFuc3dlciBmcm9tIHVzZXIuCiAKIEhvbm91cnMgR0lUX0FTS1BBU1MgYW5kIFNTSF9BU0tQQVNTIGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgcXVlcnlpbmcKLXRoZSB1c2VyLiBJZiBubyAqX0FTS1BBU1MgdmFyaWFibGUgaXMgc2V0IG9yIGFuIGVycm9yIG9jY291cmVkLAordGhlIHVzZXIuIElmIG5vICpfQVNLUEFTUyB2YXJpYWJsZSBpcyBzZXQgb3IgYW4gZXJyb3Igb2NjdXJyZWQsCiB0aGUgdGVybWluYWwgaXMgdHJpZWQgYXMgYSBmYWxsYmFjay4KIElmIEM8SVNQQVNTV09SRD4gaXMgc2V0IGFuZCB0cnVlLCB0aGUgdGVybWluYWwgZGlzYWJsZXMgZWNoby4KIApkaWZmIC0tZ2l0IGEvcHJldHR5LmMgYi9wcmV0dHkuYwppbmRleCBiMzJmMDM2Li45M2ViNmU4IDEwMDY0NAotLS0gYS9wcmV0dHkuYworKysgYi9wcmV0dHkuYwpAQCAtNjk2LDcgKzY5Niw3IEBACiAJbWFpbCA9IHMubWFpbF9iZWdpbjsKIAltYWlsbGVuID0gcy5tYWlsX2VuZCAtIHMubWFpbF9iZWdpbjsKIAotCWlmIChwYXJ0ID09ICdOJyB8fCBwYXJ0ID09ICdFJykgLyogbWFpbG1hcCBsb29rdXAgKi8KKwlpZiAocGFydCA9PSAnTicgfHwgcGFydCA9PSAnRScgfHwgcGFydCA9PSAnTCcpIC8qIG1haWxtYXAgbG9va3VwICovCiAJCW1haWxtYXBfbmFtZSgmbWFpbCwgJm1haWxsZW4sICZuYW1lLCAmbmFtZWxlbik7CiAJaWYgKHBhcnQgPT0gJ24nIHx8IHBhcnQgPT0gJ04nKSB7CS8qIG5hbWUgKi8KIAkJc3RyYnVmX2FkZChzYiwgbmFtZSwgbmFtZWxlbik7CkBAIC03MDYsNiArNzA2LDEzIEBACiAJCXN0cmJ1Zl9hZGQoc2IsIG1haWwsIG1haWxsZW4pOwogCQlyZXR1cm4gcGxhY2Vob2xkZXJfbGVuOwogCX0KKwlpZiAocGFydCA9PSAnbCcgfHwgcGFydCA9PSAnTCcpIHsJLyogbG9jYWwtcGFydCAqLworCQljb25zdCBjaGFyICphdCA9IG1lbWNocihtYWlsLCAnQCcsIG1haWxsZW4pOworCQlpZiAoYXQpCisJCQltYWlsbGVuID0gYXQgLSBtYWlsOworCQlzdHJidWZfYWRkKHNiLCBtYWlsLCBtYWlsbGVuKTsKKwkJcmV0dXJuIHBsYWNlaG9sZGVyX2xlbjsKKwl9CiAKIAlpZiAoIXMuZGF0ZV9iZWdpbikKIAkJZ290byBza2lwOwpkaWZmIC0tZ2l0IGEvcmFuZ2UtZGlmZi5oIGIvcmFuZ2UtZGlmZi5oCmluZGV4IDA4YTUwYjYuLjc3MzQ3YTkgMTAwNjQ0Ci0tLSBhL3JhbmdlLWRpZmYuaAorKysgYi9yYW5nZS1kaWZmLmgKQEAgLTYsNyArNiw3IEBACiAjZGVmaW5lIFJBTkdFX0RJRkZfQ1JFQVRJT05fRkFDVE9SX0RFRkFVTFQgNjAKIAogLyoKLSAqIENvbXBhcmUgc2VyaWVzIG9mIGNvbW1taXRzIGluIFJBTkdFMSBhbmQgUkFOR0UyLCBhbmQgZW1pdCB0byB0aGUKKyAqIENvbXBhcmUgc2VyaWVzIG9mIGNvbW1pdHMgaW4gUkFOR0UxIGFuZCBSQU5HRTIsIGFuZCBlbWl0IHRvIHRoZQogICogc3RhbmRhcmQgb3V0cHV0LiAgTlVMTCBjYW4gYmUgcGFzc2VkIHRvIERJRkZPUFQgdG8gdXNlIHRoZSBidWlsdC1pbgogICogZGVmYXVsdC4KICAqLwpkaWZmIC0tZ2l0IGEvcmVhZC1jYWNoZS5jIGIvcmVhZC1jYWNoZS5jCmluZGV4IDEzM2Y3OTAuLjA2NzQ0MjggMTAwNjQ0Ci0tLSBhL3JlYWQtY2FjaGUuYworKysgYi9yZWFkLWNhY2hlLmMKQEAgLTE3OTAsNyArMTc5MCw3IEBACiAJCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmNwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKiluYW1lOwogCQlzaXplX3Qgc3RyaXBfbGVuLCBwcmV2aW91c19sZW47CiAKLQkJLyogSWYgd2UncmUgYXQgdGhlIGJlZ2luaW5nIG9mIGEgYmxvY2ssIGlnbm9yZSB0aGUgcHJldmlvdXMgbmFtZSAqLworCQkvKiBJZiB3ZSdyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgYmxvY2ssIGlnbm9yZSB0aGUgcHJldmlvdXMgbmFtZSAqLwogCQlzdHJpcF9sZW4gPSBkZWNvZGVfdmFyaW50KCZjcCk7CiAJCWlmIChwcmV2aW91c19jZSkgewogCQkJcHJldmlvdXNfbGVuID0gcHJldmlvdXNfY2UtPmNlX25hbWVsZW47CmRpZmYgLS1naXQgYS9yZWZzL3JlZnMtaW50ZXJuYWwuaCBiL3JlZnMvcmVmcy1pbnRlcm5hbC5oCmluZGV4IGYyZDhjMDEuLmZmMjQzNmMgMTAwNjQ0Ci0tLSBhL3JlZnMvcmVmcy1pbnRlcm5hbC5oCisrKyBiL3JlZnMvcmVmcy1pbnRlcm5hbC5oCkBAIC0yNjIsNyArMjYyLDcgQEAKICAqIGFmdGVyIGNhbGxpbmcgcmVmX2l0ZXJhdG9yX2FkdmFuY2UoKSBhZ2FpbiBvciBjYWxsaW5nCiAgKiByZWZfaXRlcmF0b3JfYWJvcnQoKSwgeW91IG11c3QgbWFrZSBhIGNvcHkuIFdoZW4gdGhlIGl0ZXJhdGlvbiBoYXMKICAqIGJlZW4gZXhoYXVzdGVkLCByZWZfaXRlcmF0b3JfYWR2YW5jZSgpIHJlbGVhc2VzIGFueSByZXNvdXJjZXMKLSAqIGFzc29jYXRlZCB3aXRoIHRoZSBpdGVyYXRpb24sIGZyZWVzIHRoZSByZWZfaXRlcmF0b3Igb2JqZWN0LCBhbmQKKyAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgaXRlcmF0aW9uLCBmcmVlcyB0aGUgcmVmX2l0ZXJhdG9yIG9iamVjdCwgYW5kCiAgKiByZXR1cm5zIElURVJfRE9ORS4gSWYgeW91IHdhbnQgdG8gYWJvcnQgdGhlIGl0ZXJhdGlvbiBlYXJseSwgY2FsbAogICogcmVmX2l0ZXJhdG9yX2Fib3J0KCksIHdoaWNoIGFsc28gZnJlZXMgdGhlIHJlZl9pdGVyYXRvciBvYmplY3QgYW5kCiAgKiBhbnkgYXNzb2NpYXRlZCByZXNvdXJjZXMuIElmIHRoZXJlIHdhcyBhbiBpbnRlcm5hbCBlcnJvciBhZHZhbmNpbmcKZGlmZiAtLWdpdCBhL3JlcG9zaXRvcnkuYyBiL3JlcG9zaXRvcnkuYwppbmRleCA2ODJjMjM5Li5hNDE3NGRkIDEwMDY0NAotLS0gYS9yZXBvc2l0b3J5LmMKKysrIGIvcmVwb3NpdG9yeS5jCkBAIC0yMDAsOSArMjAwLDkgQEAKIAogCWlmIChyZXBvX2luaXQoc3VicmVwbywgZ2l0ZGlyLmJ1Ziwgd29ya3RyZWUuYnVmKSkgewogCQkvKgotCQkgKiBJZiBpbml0aWxpemF0aW9uIGZhaWxzIHRoZW4gaXQgbWF5IGJlIGR1ZSB0byB0aGUgc3VibW9kdWxlCisJCSAqIElmIGluaXRpYWxpemF0aW9uIGZhaWxzIHRoZW4gaXQgbWF5IGJlIGR1ZSB0byB0aGUgc3VibW9kdWxlCiAJCSAqIG5vdCBiZWluZyBwb3B1bGF0ZWQgaW4gdGhlIHN1cGVycHJvamVjdCdzIHdvcmt0cmVlLiAgSW5zdGVhZAotCQkgKiB3ZSBjYW4gdHJ5IHRvIGluaXRpbGl6ZSB0aGUgc3VibW9kdWxlIGJ5IGZpbmRpbmcgaXQncyBnaXRkaXIKKwkJICogd2UgY2FuIHRyeSB0byBpbml0aWFsaXplIHRoZSBzdWJtb2R1bGUgYnkgZmluZGluZyBpdCdzIGdpdGRpcgogCQkgKiBpbiB0aGUgc3VwZXJwcm9qZWN0J3MgJ21vZHVsZXMnIGRpcmVjdG9yeS4gIEluIHRoaXMgY2FzZSB0aGUKIAkJICogc3VibW9kdWxlIHdvdWxkIG5vdCBoYXZlIGEgd29ya3RyZWUuCiAJCSAqLwpkaWZmIC0tZ2l0IGEvcmVwb3NpdG9yeS5oIGIvcmVwb3NpdG9yeS5oCmluZGV4IGZlNDIxOTcuLjA0MDA1N2QgMTAwNjQ0Ci0tLSBhL3JlcG9zaXRvcnkuaAorKysgYi9yZXBvc2l0b3J5LmgKQEAgLTE3Miw3ICsxNzIsNyBAQAogICogYmUgYWxsb2NhdGVkIGlmIG5lZWRlZC4KICAqCiAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBpbmRleCBlbnRyaWVzIGluIHRoZSBwb3B1bGF0ZWQgaW5kZXggb3IgYSB2YWx1ZSBsZXNzCi0gKiB0aGFuIHplcm8gaWYgYW4gZXJyb3Igb2NjdXJlZC4gIElmIHRoZSByZXBvc2l0b3J5J3MgaW5kZXggaGFzIGFscmVhZHkgYmVlbgorICogdGhhbiB6ZXJvIGlmIGFuIGVycm9yIG9jY3VycmVkLiAgSWYgdGhlIHJlcG9zaXRvcnkncyBpbmRleCBoYXMgYWxyZWFkeSBiZWVuCiAgKiBwb3B1bGF0ZWQgdGhlbiB0aGUgbnVtYmVyIG9mIGVudHJpZXMgd2lsbCBzaW1wbHkgYmUgcmV0dXJuZWQuCiAgKi8KIGludCByZXBvX3JlYWRfaW5kZXgoc3RydWN0IHJlcG9zaXRvcnkgKnJlcG8pOwpkaWZmIC0tZ2l0IGEvcmVyZXJlLmMgYi9yZXJlcmUuYwppbmRleCAzZTUxZmRmLi45MjgxMTMxIDEwMDY0NAotLS0gYS9yZXJlcmUuYworKysgYi9yZXJlcmUuYwpAQCAtNDMxLDcgKzQzMSw3IEBACiAgKiBhbmQgTlVMIGNvbmNhdGVuYXRlZCB0b2dldGhlci4KICAqCiAgKiBSZXR1cm4gMSBpZiBjb25mbGljdCBodW5rcyBhcmUgZm91bmQsIDAgaWYgdGhlcmUgYXJlIG5vIGNvbmZsaWN0Ci0gKiBodW5rcyBhbmQgLTEgaWYgYW4gZXJyb3Igb2NjdXJlZC4KKyAqIGh1bmtzIGFuZCAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZC4KICAqLwogc3RhdGljIGludCBoYW5kbGVfcGF0aCh1bnNpZ25lZCBjaGFyICpoYXNoLCBzdHJ1Y3QgcmVyZXJlX2lvICppbywgaW50IG1hcmtlcl9zaXplKQogewpkaWZmIC0tZ2l0IGEvc2VxdWVuY2VyLmMgYi9zZXF1ZW5jZXIuYwppbmRleCA5ZDU5NjRmLi4yYzZmYmNiIDEwMDY0NAotLS0gYS9zZXF1ZW5jZXIuYworKysgYi9zZXF1ZW5jZXIuYwpAQCAtMTMxLDcgKzEzMSw3IEBACiAJInJlYmFzZS1tZXJnZS9yZXdyaXR0ZW4tcGVuZGluZyIpCiAKIC8qCi0gKiBUaGUgcGF0aCBvZiB0aGUgZmlsZSBjb250YWluaWcgdGhlIE9JRCBvZiB0aGUgInNxdWFzaCBvbnRvIiBjb21taXQsIGkuZS4KKyAqIFRoZSBwYXRoIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIE9JRCBvZiB0aGUgInNxdWFzaCBvbnRvIiBjb21taXQsIGkuZS4KICAqIHRoZSBkdW1teSBjb21taXQgdXNlZCBmb3IgYHJlc2V0IFtuZXcgcm9vdF1gLgogICovCiBzdGF0aWMgR0lUX1BBVEhfRlVOQyhyZWJhc2VfcGF0aF9zcXVhc2hfb250bywgInJlYmFzZS1tZXJnZS9zcXVhc2gtb250byIpCkBAIC0xMTI2LDI1ICsxMTI2LDIyIEBACiAJCQkJICAgICAgIHN0cnVjdCBzdHJidWYgKm1zZywKIAkJCQkgICAgICAgY29uc3QgY2hhciAqY29tbWl0KQogewotCXN0cnVjdCBhcmd2X2FycmF5IGhvb2tfZW52ID0gQVJHVl9BUlJBWV9JTklUOwotCWludCByZXQ7Ci0JY29uc3QgY2hhciAqbmFtZTsKKwlpbnQgcmV0ID0gMDsKKwljb25zdCBjaGFyICpuYW1lLCAqYXJnMSA9IE5VTEwsICphcmcyID0gTlVMTDsKIAogCW5hbWUgPSBnaXRfcGF0aF9jb21taXRfZWRpdG1zZygpOwogCWlmICh3cml0ZV9tZXNzYWdlKG1zZy0+YnVmLCBtc2ctPmxlbiwgbmFtZSwgMCkpCiAJCXJldHVybiAtMTsKIAotCWFyZ3ZfYXJyYXlfcHVzaGYoJmhvb2tfZW52LCAiR0lUX0lOREVYX0ZJTEU9JXMiLCByLT5pbmRleF9maWxlKTsKLQlhcmd2X2FycmF5X3B1c2goJmhvb2tfZW52LCAiR0lUX0VESVRPUj06Iik7Ci0JaWYgKGNvbW1pdCkKLQkJcmV0ID0gcnVuX2hvb2tfbGUoaG9va19lbnYuYXJndiwgInByZXBhcmUtY29tbWl0LW1zZyIsIG5hbWUsCi0JCQkJICAiY29tbWl0IiwgY29tbWl0LCBOVUxMKTsKLQllbHNlCi0JCXJldCA9IHJ1bl9ob29rX2xlKGhvb2tfZW52LmFyZ3YsICJwcmVwYXJlLWNvbW1pdC1tc2ciLCBuYW1lLAotCQkJCSAgIm1lc3NhZ2UiLCBOVUxMKTsKLQlpZiAocmV0KQorCWlmIChjb21taXQpIHsKKwkJYXJnMSA9ICJjb21taXQiOworCQlhcmcyID0gY29tbWl0OworCX0gZWxzZSB7CisJCWFyZzEgPSAibWVzc2FnZSI7CisJfQorCWlmIChydW5fY29tbWl0X2hvb2soMCwgci0+aW5kZXhfZmlsZSwgInByZXBhcmUtY29tbWl0LW1zZyIsIG5hbWUsCisJCQkgICAgYXJnMSwgYXJnMiwgTlVMTCkpCiAJCXJldCA9IGVycm9yKF8oIidwcmVwYXJlLWNvbW1pdC1tc2cnIGhvb2sgZmFpbGVkIikpOwotCWFyZ3ZfYXJyYXlfY2xlYXIoJmhvb2tfZW52KTsKIAogCXJldHVybiByZXQ7CiB9CkBAIC0xNDAzLDYgKzE0MDAsNyBAQAogCQlnb3RvIG91dDsKIAl9CiAKKwlydW5fY29tbWl0X2hvb2soMCwgci0+aW5kZXhfZmlsZSwgInBvc3QtY29tbWl0IiwgTlVMTCk7CiAJaWYgKGZsYWdzICYgQU1FTkRfTVNHKQogCQljb21taXRfcG9zdF9yZXdyaXRlKHIsIGN1cnJlbnRfaGVhZCwgb2lkKTsKIApAQCAtMTU3Niw2ICsxNTc0LDcgQEAKIAlzdHJ1Y3Qgc3RyYnVmIGJ1ZiA9IFNUUkJVRl9JTklUOwogCWludCByZXM7CiAJY29uc3QgY2hhciAqbWVzc2FnZSwgKmJvZHk7CisJY29uc3QgY2hhciAqZW5jb2RpbmcgPSBnZXRfY29tbWl0X291dHB1dF9lbmNvZGluZygpOwogCiAJaWYgKG9wdHMtPmN1cnJlbnRfZml4dXBfY291bnQgPiAwKSB7CiAJCXN0cnVjdCBzdHJidWYgaGVhZGVyID0gU1RSQlVGX0lOSVQ7CkBAIC0xNjAyLDcgKzE2MDEsNyBAQAogCQkJcmV0dXJuIGVycm9yKF8oIm5lZWQgYSBIRUFEIHRvIGZpeHVwIikpOwogCQlpZiAoIShoZWFkX2NvbW1pdCA9IGxvb2t1cF9jb21taXRfcmVmZXJlbmNlKHIsICZoZWFkKSkpCiAJCQlyZXR1cm4gZXJyb3IoXygiY291bGQgbm90IHJlYWQgSEVBRCIpKTsKLQkJaWYgKCEoaGVhZF9tZXNzYWdlID0gZ2V0X2NvbW1pdF9idWZmZXIoaGVhZF9jb21taXQsIE5VTEwpKSkKKwkJaWYgKCEoaGVhZF9tZXNzYWdlID0gbG9nbXNnX3JlZW5jb2RlKGhlYWRfY29tbWl0LCBOVUxMLCBlbmNvZGluZykpKQogCQkJcmV0dXJuIGVycm9yKF8oImNvdWxkIG5vdCByZWFkIEhFQUQncyBjb21taXQgbWVzc2FnZSIpKTsKIAogCQlmaW5kX2NvbW1pdF9zdWJqZWN0KGhlYWRfbWVzc2FnZSwgJmJvZHkpOwpAQCAtMTYyMyw3ICsxNjIyLDcgQEAKIAkJdW51c2VfY29tbWl0X2J1ZmZlcihoZWFkX2NvbW1pdCwgaGVhZF9tZXNzYWdlKTsKIAl9CiAKLQlpZiAoIShtZXNzYWdlID0gZ2V0X2NvbW1pdF9idWZmZXIoY29tbWl0LCBOVUxMKSkpCisJaWYgKCEobWVzc2FnZSA9IGxvZ21zZ19yZWVuY29kZShjb21taXQsIE5VTEwsIGVuY29kaW5nKSkpCiAJCXJldHVybiBlcnJvcihfKCJjb3VsZCBub3QgcmVhZCBjb21taXQgbWVzc2FnZSBvZiAlcyIpLAogCQkJICAgICBvaWRfdG9faGV4KCZjb21taXQtPm9iamVjdC5vaWQpKTsKIAlmaW5kX2NvbW1pdF9zdWJqZWN0KG1lc3NhZ2UsICZib2R5KTsKQEAgLTI1NjQsMTQgKzI1NjMsMTcgQEAKIAllbnVtIHRvZG9fY29tbWFuZCBjb21tYW5kID0gb3B0cy0+YWN0aW9uID09IFJFUExBWV9QSUNLID8KIAkJVE9ET19QSUNLIDogVE9ET19SRVZFUlQ7CiAJY29uc3QgY2hhciAqY29tbWFuZF9zdHJpbmcgPSB0b2RvX2NvbW1hbmRfaW5mb1tjb21tYW5kXS5zdHI7CisJY29uc3QgY2hhciAqZW5jb2Rpbmc7CiAJc3RydWN0IGNvbW1pdCAqY29tbWl0OwogCiAJaWYgKHByZXBhcmVfcmV2cyhvcHRzKSkKIAkJcmV0dXJuIC0xOwogCisJZW5jb2RpbmcgPSBnZXRfbG9nX291dHB1dF9lbmNvZGluZygpOworCiAJd2hpbGUgKChjb21taXQgPSBnZXRfcmV2aXNpb24ob3B0cy0+cmV2cykpKSB7CiAJCXN0cnVjdCB0b2RvX2l0ZW0gKml0ZW0gPSBhcHBlbmRfbmV3X3RvZG8odG9kb19saXN0KTsKLQkJY29uc3QgY2hhciAqY29tbWl0X2J1ZmZlciA9IGdldF9jb21taXRfYnVmZmVyKGNvbW1pdCwgTlVMTCk7CisJCWNvbnN0IGNoYXIgKmNvbW1pdF9idWZmZXIgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBOVUxMLCBlbmNvZGluZyk7CiAJCWNvbnN0IGNoYXIgKnN1YmplY3Q7CiAJCWludCBzdWJqZWN0X2xlbjsKIApAQCAtMjk2OCw3ICsyOTcwLDggQEAKIAogCXN0cmJ1Zl9hZGRmKCZidWYsICIlcy9tZXNzYWdlIiwgZ2V0X2RpcihvcHRzKSk7CiAJaWYgKCFmaWxlX2V4aXN0cyhidWYuYnVmKSkgewotCQljb25zdCBjaGFyICpjb21taXRfYnVmZmVyID0gZ2V0X2NvbW1pdF9idWZmZXIoY29tbWl0LCBOVUxMKTsKKwkJY29uc3QgY2hhciAqZW5jb2RpbmcgPSBnZXRfY29tbWl0X291dHB1dF9lbmNvZGluZygpOworCQljb25zdCBjaGFyICpjb21taXRfYnVmZmVyID0gbG9nbXNnX3JlZW5jb2RlKGNvbW1pdCwgTlVMTCwgZW5jb2RpbmcpOwogCQlmaW5kX2NvbW1pdF9zdWJqZWN0KGNvbW1pdF9idWZmZXIsICZzdWJqZWN0KTsKIAkJcmVzIHw9IHdyaXRlX21lc3NhZ2Uoc3ViamVjdCwgc3RybGVuKHN1YmplY3QpLCBidWYuYnVmLCAxKTsKIAkJdW51c2VfY29tbWl0X2J1ZmZlcihjb21taXQsIGNvbW1pdF9idWZmZXIpOwpAQCAtMzM3MCw3ICszMzczLDggQEAKIAl9CiAKIAlpZiAoY29tbWl0KSB7Ci0JCWNvbnN0IGNoYXIgKm1lc3NhZ2UgPSBnZXRfY29tbWl0X2J1ZmZlcihjb21taXQsIE5VTEwpOworCQljb25zdCBjaGFyICplbmNvZGluZyA9IGdldF9jb21taXRfb3V0cHV0X2VuY29kaW5nKCk7CisJCWNvbnN0IGNoYXIgKm1lc3NhZ2UgPSBsb2dtc2dfcmVlbmNvZGUoY29tbWl0LCBOVUxMLCBlbmNvZGluZyk7CiAJCWNvbnN0IGNoYXIgKmJvZHk7CiAJCWludCBsZW47CiAKQEAgLTQxNTEsOSArNDE1NSwxMCBAQAogCQkJCSAqLwogCQkJCXN0cnVjdCBjb21taXQgKmNvbW1pdDsKIAkJCQljb25zdCBjaGFyICpwYXRoID0gcmViYXNlX3BhdGhfc3F1YXNoX21zZygpOworCQkJCWNvbnN0IGNoYXIgKmVuY29kaW5nID0gZ2V0X2NvbW1pdF9vdXRwdXRfZW5jb2RpbmcoKTsKIAogCQkJCWlmIChwYXJzZV9oZWFkKHIsICZjb21taXQpIHx8Ci0JCQkJICAgICEocCA9IGdldF9jb21taXRfYnVmZmVyKGNvbW1pdCwgTlVMTCkpIHx8CisJCQkJICAgICEocCA9IGxvZ21zZ19yZWVuY29kZShjb21taXQsIE5VTEwsIGVuY29kaW5nKSkgfHwKIAkJCQkgICAgd3JpdGVfbWVzc2FnZShwLCBzdHJsZW4ocCksIHBhdGgsIDApKSB7CiAJCQkJCXVudXNlX2NvbW1pdF9idWZmZXIoY29tbWl0LCBwKTsKIAkJCQkJcmV0dXJuIGVycm9yKF8oImNvdWxkIG5vdCB3cml0ZSBmaWxlOiAiCkBAIC00NjQ0LDcgKzQ2NDksNyBAQAogCQkJCWxhYmVsX29pZChvaWQsICJicmFuY2gtcG9pbnQiLCAmc3RhdGUpOwogCQl9CiAKLQkJLyogQWRkIEhFQUQgYXMgaW1wbGljdCAidGlwIG9mIGJyYW5jaCIgKi8KKwkJLyogQWRkIEhFQUQgYXMgaW1wbGljaXQgInRpcCBvZiBicmFuY2giICovCiAJCWlmICghaXRlci0+bmV4dCkKIAkJCXRpcHNfdGFpbCA9ICZjb21taXRfbGlzdF9pbnNlcnQoaXRlci0+aXRlbSwKIAkJCQkJCQl0aXBzX3RhaWwpLT5uZXh0OwpAQCAtNDgyNiw3ICs0ODMxLDcgQEAKIAkgKiBhcmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBwaWNrLCBzbyB3ZSBpbnNlcnQgdGhlIGNvbW1hbmRzICphZnRlcioKIAkgKiB0aG9zZSBjaGFpbnMgaWYgdGhlcmUgYXJlIGFueS4KIAkgKgotCSAqIEFzIHdlIGluc2VydCB0aGUgZXhlYyBjb21tYW5kcyBpbW1lZGlhdGx5IGFmdGVyIHJlYXJyYW5naW5nCisJICogQXMgd2UgaW5zZXJ0IHRoZSBleGVjIGNvbW1hbmRzIGltbWVkaWF0ZWx5IGFmdGVyIHJlYXJyYW5naW5nCiAJICogYW55IGZpeHVwcyBhbmQgYmVmb3JlIHRoZSB1c2VyIGVkaXRzIHRoZSBsaXN0LCBhIGZpeHVwIGNoYWluCiAJICogY2FuIG5ldmVyIGNvbnRhaW4gY29tbWVudHMgKGFueSBjb21tZW50cyBhcmUgZW1wdHkgcGlja3MgdGhhdAogCSAqIGhhdmUgYmVlbiBjb21tZW50ZWQgb3V0IGJlY2F1c2UgdGhlIHVzZXIgZGlkIG5vdCBzcGVjaWZ5CkBAIC01MTY5LDcgKzUxNzQsNyBAQAogCQkqY29tbWl0X3RvZG9faXRlbV9hdCgmY29tbWl0X3RvZG8sIGl0ZW0tPmNvbW1pdCkgPSBpdGVtOwogCiAJCXBhcnNlX2NvbW1pdChpdGVtLT5jb21taXQpOwotCQljb21taXRfYnVmZmVyID0gZ2V0X2NvbW1pdF9idWZmZXIoaXRlbS0+Y29tbWl0LCBOVUxMKTsKKwkJY29tbWl0X2J1ZmZlciA9IGxvZ21zZ19yZWVuY29kZShpdGVtLT5jb21taXQsIE5VTEwsICJVVEYtOCIpOwogCQlmaW5kX2NvbW1pdF9zdWJqZWN0KGNvbW1pdF9idWZmZXIsICZzdWJqZWN0KTsKIAkJZm9ybWF0X3N1YmplY3QoJmJ1Ziwgc3ViamVjdCwgIiAiKTsKIAkJc3ViamVjdCA9IHN1YmplY3RzW2ldID0gc3RyYnVmX2RldGFjaCgmYnVmLCAmc3ViamVjdF9sZW4pOwpkaWZmIC0tZ2l0IGEvc2VxdWVuY2VyLmggYi9zZXF1ZW5jZXIuaAppbmRleCA1NzQyNjBmLi45ZjlhZTI5IDEwMDY0NAotLS0gYS9zZXF1ZW5jZXIuaAorKysgYi9zZXF1ZW5jZXIuaApAQCAtMjAyLDExICsyMDIsMTAgQEAKIAogaW50IHJlYWRfYXV0aG9yX3NjcmlwdChjb25zdCBjaGFyICpwYXRoLCBjaGFyICoqbmFtZSwgY2hhciAqKmVtYWlsLCBjaGFyICoqZGF0ZSwKIAkJICAgICAgIGludCBhbGxvd19taXNzaW5nKTsKLSNlbmRpZgotCiB2b2lkIHBhcnNlX3N0cmF0ZWd5X29wdHMoc3RydWN0IHJlcGxheV9vcHRzICpvcHRzLCBjaGFyICpyYXdfb3B0cyk7CiBpbnQgd3JpdGVfYmFzaWNfc3RhdGUoc3RydWN0IHJlcGxheV9vcHRzICpvcHRzLCBjb25zdCBjaGFyICpoZWFkX25hbWUsCiAJCSAgICAgIHN0cnVjdCBjb21taXQgKm9udG8sIGNvbnN0IGNoYXIgKm9yaWdfaGVhZCk7CiB2b2lkIHNlcXVlbmNlcl9wb3N0X2NvbW1pdF9jbGVhbnVwKHN0cnVjdCByZXBvc2l0b3J5ICpyLCBpbnQgdmVyYm9zZSk7CiBpbnQgc2VxdWVuY2VyX2dldF9sYXN0X2NvbW1hbmQoc3RydWN0IHJlcG9zaXRvcnkqIHIsCiAJCQkgICAgICAgZW51bSByZXBsYXlfYWN0aW9uICphY3Rpb24pOworI2VuZGlmIC8qIFNFUVVFTkNFUl9IICovCmRpZmYgLS1naXQgYS9zZXJ2ZXItaW5mby5jIGIvc2VydmVyLWluZm8uYwppbmRleCA0ZDgxOTliLi5iYWUyY2RmIDEwMDY0NAotLS0gYS9zZXJ2ZXItaW5mby5jCisrKyBiL3NlcnZlci1pbmZvLmMKQEAgLTkzLDcgKzkzLDcgQEAKIAkJdWljLm9sZF9mcCA9IGZvcGVuX29yX3dhcm4ocGF0aCwgInIiKTsKIAogCS8qCi0JICogdWljX3ByaW50ZiB3aWxsIGNvbXBhcmUgaW5jcmVtZW50YWwgY29tcGFyaXNvbiBhZ2luc3Qgb2xkX2ZwCisJICogdWljX3ByaW50ZiB3aWxsIGNvbXBhcmUgaW5jcmVtZW50YWwgY29tcGFyaXNvbiBhZ2FpbnN0IG9sZF9mcAogCSAqIGFuZCBtYXJrIHVpYyBhcyBzdGFsZSBpZiBuZWVkZWQKIAkgKi8KIAlyZXQgPSBnZW5lcmF0ZSgmdWljKTsKZGlmZiAtLWdpdCBhL3NoYTFkYy9zaGExLmMgYi9zaGExZGMvc2hhMS5jCmluZGV4IDlkM2NmODEuLjYzY2Q1YzkgMTAwNjQ0Ci0tLSBhL3NoYTFkYy9zaGExLmMKKysrIGIvc2hhMWRjL3NoYTEuYwpAQCAtNzIsNyArNzIsNyBAQAogLyogTm90IHVuZGVyIEdDQy1hbGlrZSBvciBnbGliYyAqLwogI2VsaWYgZGVmaW5lZChfQllURV9PUkRFUikgJiYgZGVmaW5lZChfQklHX0VORElBTikgJiYgZGVmaW5lZChfTElUVExFX0VORElBTikKIC8qCi0gKiAqQlNEIGFuZCBuZXdsaWIgKGVtYmVkZWQgbGludXgsIGN5Z3dpbiwgZXRjKS4KKyAqICpCU0QgYW5kIG5ld2xpYiAoZW1iZWRkZWQgbGludXgsIGN5Z3dpbiwgZXRjKS4KICAqIHRoZSBkZWZpbmVkKF9CSUdfRU5ESUFOKSAmJiBkZWZpbmVkKF9MSVRUTEVfRU5ESUFOKSBwYXJ0IHByZXZlbnRzCiAgKiB0aGlzIGNvbmRpdGlvbiBmcm9tIG1hdGNoaW5nIHdpdGggU29sYXJpcy9zcGFyYy4KICAqIChTb2xhcmlzIGRlZmluZXMgb25seSBvbmUgZW5kaWFuIG1hY3JvKQpkaWZmIC0tZ2l0IGEvc2hhMWRjX2dpdC5jIGIvc2hhMWRjX2dpdC5jCmluZGV4IGUwY2M5ZDkuLjVjMzAwZTggMTAwNjQ0Ci0tLSBhL3NoYTFkY19naXQuYworKysgYi9zaGExZGNfZ2l0LmMKQEAgLTE5LDcgKzE5LDcgQEAKIAlpZiAoIVNIQTFEQ0ZpbmFsKGhhc2gsIGN0eCkpCiAJCXJldHVybjsKIAlkaWUoIlNIQS0xIGFwcGVhcnMgdG8gYmUgcGFydCBvZiBhIGNvbGxpc2lvbiBhdHRhY2s6ICVzIiwKLQkgICAgc2hhMV90b19oZXgoaGFzaCkpOworCSAgICBoYXNoX3RvX2hleF9hbGdvcChoYXNoLCAmaGFzaF9hbGdvc1tHSVRfSEFTSF9TSEExXSkpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3RyaW5nLWxpc3QuaCBiL3N0cmluZy1saXN0LmgKaW5kZXggZjk2NDM5OS4uN2JiMGFkMCAxMDA2NDQKLS0tIGEvc3RyaW5nLWxpc3QuaAorKysgYi9zdHJpbmctbGlzdC5oCkBAIC0xNzksNyArMTc5LDcgQEAKIAogLyoqCiAgKiBDaGVjayBpZiB0aGUgZ2l2ZW4gc3RyaW5nIGlzIHBhcnQgb2YgYSBzb3J0ZWQgbGlzdC4gSWYgaXQgaXMgcGFydCBvZiB0aGUgbGlzdCwKLSAqIHJldHVybiB0aGUgY29yZXNwb25kaW5nIHN0cmluZ19saXN0X2l0ZW0sIE5VTEwgb3RoZXJ3aXNlLgorICogcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIHN0cmluZ19saXN0X2l0ZW0sIE5VTEwgb3RoZXJ3aXNlLgogICovCiBzdHJ1Y3Qgc3RyaW5nX2xpc3RfaXRlbSAqc3RyaW5nX2xpc3RfbG9va3VwKHN0cnVjdCBzdHJpbmdfbGlzdCAqbGlzdCwgY29uc3QgY2hhciAqc3RyaW5nKTsKIApkaWZmIC0tZ2l0IGEvdC9saWItcmViYXNlLnNoIGIvdC9saWItcmViYXNlLnNoCmluZGV4IDZkODc5NjEuLmI3MmMwNTEgMTAwNjQ0Ci0tLSBhL3QvbGliLXJlYmFzZS5zaAorKysgYi90L2xpYi1yZWJhc2Uuc2gKQEAgLTExOSwzICsxMTksMzEgQEAKIAlnaXQgY29tbWl0IC0tYWxsb3ctZW1wdHkgLW0gIiQxIiAmJgogCWdpdCB0YWcgIiQxIgogfQorCisjIENhbGwgdGhpcyAoaW5zaWRlIHRlc3RfZXhwZWN0X3N1Y2Nlc3MpIGF0IHRoZSBlbmQgb2YgYSB0ZXN0IGZpbGUgdG8KKyMgY2hlY2sgdGhhdCBubyB0ZXN0cyBoYXZlIGNoYW5nZWQgZWRpdG9yIHJlbGF0ZWQgZW52aXJvbm1lbnQKKyMgdmFyaWFibGVzIG9yIGNvbmZpZyBzZXR0aW5ncwordGVzdF9lZGl0b3JfdW5jaGFuZ2VkICgpIHsKKwkjIFdlJ3JlIG9ubHkgaW50ZXJlc3RlZCBpbiBleHBvcnRlZCB2YXJpYWJsZXMgaGVuY2UgJ3NoIC1jJworCXNoIC1jICdjYXQgPmFjdHVhbCA8PC1FT0YKKwlFRElUT1I9JEVESVRPUgorCUZBS0VfQ09NTUlUX0FNRU5EPSRGQUtFX0NPTU1JVF9BTUVORAorCUZBS0VfQ09NTUlUX01FU1NBR0U9JEZBS0VfQ09NTUlUX01FU1NBR0UKKwlGQUtFX0xJTkVTPSRGQUtFX0xJTkVTCisJR0lUX0VESVRPUj0kR0lUX0VESVRPUgorCUdJVF9TRVFVRU5DRV9FRElUT1I9JEdJVF9TRVFVRU5DRV9FRElUT1IKKwljb3JlLmVkaXRvcj0kKGdpdCBjb25maWcgY29yZS5lZGl0b3IpCisJc2VxdWVuY2UuZWRpdG9yPSQoZ2l0IGNvbmZpZyBzZXF1ZW5jZS5lZGl0b3IpCisJRU9GJworCWNhdCA+ZXhwZWN0IDw8LVxFT0YKKwlFRElUT1I9OgorCUZBS0VfQ09NTUlUX0FNRU5EPQorCUZBS0VfQ09NTUlUX01FU1NBR0U9CisJRkFLRV9MSU5FUz0KKwlHSVRfRURJVE9SPQorCUdJVF9TRVFVRU5DRV9FRElUT1I9CisJY29yZS5lZGl0b3I9CisJc2VxdWVuY2UuZWRpdG9yPQorCUVPRgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKK30KZGlmZiAtLWdpdCBhL3Qvb2lkLWluZm8vaGFzaC1pbmZvIGIvdC9vaWQtaW5mby9oYXNoLWluZm8KaW5kZXggY2NkYmZkZi4uZDA3MzZkZCAxMDA2NDQKLS0tIGEvdC9vaWQtaW5mby9oYXNoLWluZm8KKysrIGIvdC9vaWQtaW5mby9oYXNoLWluZm8KQEAgLTYsMyArNiwxMiBAQAogCiB6ZXJvIHNoYTE6MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogemVybyBzaGEyNTY6MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAorCithbGdvIHNoYTE6c2hhMQorYWxnbyBzaGEyNTY6c2hhMjU2CisKK2VtcHR5X2Jsb2Igc2hhMTplNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxCitlbXB0eV9ibG9iIHNoYTI1Njo0NzNhMGY0YzNiZThhOTM2ODFhMjY3ZTNiMWU5YTdkY2RhMTE4NTQzNmZlMTQxZjc3NDkxMjBhMzAzNzIxODEzCisKK2VtcHR5X3RyZWUgc2hhMTo0YjgyNWRjNjQyY2I2ZWI5YTA2MGU1NGJmOGQ2OTI4OGZiZWU0OTA0CitlbXB0eV90cmVlIHNoYTI1Njo2ZWYxOWI0MTIyNWM1MzY5ZjFjMTA0ZDQ1ZDhkODVlZmE5YjA1N2I1M2IxNGI0YjliOTM5ZGQ3NGRlY2M1MzIxCmRpZmYgLS1naXQgYS90L3BlcmYvYmlzZWN0X3JlZ3Jlc3Npb24gYi90L3BlcmYvYmlzZWN0X3JlZ3Jlc3Npb24KaW5kZXggYTk0ZDk5NS4uY2U0N2UxNiAxMDA3NTUKLS0tIGEvdC9wZXJmL2Jpc2VjdF9yZWdyZXNzaW9uCisrKyBiL3QvcGVyZi9iaXNlY3RfcmVncmVzc2lvbgpAQCAtNTEsNyArNTEsNyBAQAogbmV3dGltZT0kKGVjaG8gIiRuZXd0aW1lIiB8IHNlZCAtZSAncy9eXChbMC05XVwrXC5bMC05XVwrXCkuKiQvXDEvJykKIAogdGVzdCAkKGVjaG8gIiRuZXd0aW1lIiAiJG9sZHRpbWUiIHwgYXdrICd7IHByaW50ICgkMSA+ICQyKSB9JykgPSAxIHx8Ci0JZGllICJOZXcgdGltZSAnJG5ld3RpbWUnIHNob3VkIGJlIGdyZWF0ZXIgdGhhbiBvbGQgdGltZSAnJG9sZHRpbWUnIgorCWRpZSAiTmV3IHRpbWUgJyRuZXd0aW1lJyBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9sZCB0aW1lICckb2xkdGltZSciCiAKIHRtcGRpcj0kKG1rdGVtcCAtZCAtdCBiaXNlY3RfcmVncmVzc2lvbl9YWFhYWFgpIHx8IGRpZSAiRmFpbGVkIHRvIGNyZWF0ZSB0ZW1wIGRpcmVjdG9yeSIKIGVjaG8gIiRvbGR0aW1lIiA+IiR0bXBkaXIvb2xkdGltZSIgfHwgZGllICJGYWlsZWQgdG8gd3JpdGUgdG8gJyR0bXBkaXIvb2xkdGltZSciCmRpZmYgLS1naXQgYS90L3BlcmYvcDUzMDMtbWFueS1wYWNrcy5zaCBiL3QvcGVyZi9wNTMwMy1tYW55LXBhY2tzLnNoCmluZGV4IDM3Nzk4NTEuLmEzNjkxNTIgMTAwNzU1Ci0tLSBhL3QvcGVyZi9wNTMwMy1tYW55LXBhY2tzLnNoCisrKyBiL3QvcGVyZi9wNTMwMy1tYW55LXBhY2tzLnNoCkBAIC03Nyw2ICs3Nyw3IEBACiAJIyBhY3R1YWwgcGFjayBnZW5lcmF0aW9uLCB3aXRob3V0IHNtdWRnaW5nIHRoZSBvbi1kaXNrIHNldHVwCiAJIyBiZXR3ZWVuIHRyaWFscy4KIAl0ZXN0X3BlcmYgInJlcGFjayAoJG5yX3BhY2tzKSIgJworCQlHSVRfVEVTVF9GVUxMX0lOX1BBQ0tfQVJSQVk9MSBcCiAJCWdpdCBwYWNrLW9iamVjdHMgLS1rZWVwLXRydWUtcGFyZW50cyBcCiAJCSAgLS1ob25vci1wYWNrLWtlZXAgLS1ub24tZW1wdHkgLS1hbGwgXAogCQkgIC0tcmVmbG9nIC0taW5kZXhlZC1vYmplY3RzIC0tZGVsdGEtYmFzZS1vZmZzZXQgXApkaWZmIC0tZ2l0IGEvdC90MDAwMC1iYXNpYy5zaCBiL3QvdDAwMDAtYmFzaWMuc2gKaW5kZXggNGQzZjdiYS4uN2FhYmRlMSAxMDA3NTUKLS0tIGEvdC90MDAwMC1iYXNpYy5zaAorKysgYi90L3QwMDAwLWJhc2ljLnNoCkBAIC0xMjYsNyArMTI2LDcgQEAKIAogY2hlY2tfc3ViX3Rlc3RfbGliX3Rlc3RfZXJyICgpIHsKIAluYW1lPSIkMSIgIyBzdGRpbiBpcyB0aGUgZXhwZWN0ZWQgb3V0cHV0IGZyb20gdGhlIHRlc3QKLQkjIGV4cGVjdGVkIGVycm9yIG91dHB1dCBpcyBpbiBkZXNjcmlwdGlvciAzCisJIyBleHBlY3RlZCBlcnJvciBvdXRwdXQgaXMgaW4gZGVzY3JpcHRvciAzCiAJKAogCQljZCAiJG5hbWUiICYmCiAJCXNlZCAtZSAncy9ePiAvLycgLWUgJ3MvWiQvLycgPmV4cGVjdC5vdXQgJiYKZGlmZiAtLWdpdCBhL3QvdDAwMjctYXV0by1jcmxmLnNoIGIvdC90MDAyNy1hdXRvLWNybGYuc2gKaW5kZXggOTU5YjZkYS4uOWZjZDU2ZiAxMDA3NTUKLS0tIGEvdC90MDAyNy1hdXRvLWNybGYuc2gKKysrIGIvdC90MDAyNy1hdXRvLWNybGYuc2gKQEAgLTIxNSw3ICsyMTUsNyBAQAogfQogCiAKLSMgY29udHJ1Y3QgdGhlIGF0dHIvIHJldHVybmVkIGJ5IGdpdCBscy1maWxlcyAtLWVvbAorIyBjb25zdHJ1Y3QgdGhlIGF0dHIvIHJldHVybmVkIGJ5IGdpdCBscy1maWxlcyAtLWVvbAogIyBUYWtlIG5vbmUgKD1lbXB0eSksIG9uZSBvciB0d28gYXJncwogIyBjb252ZXJ0LmM6IGVvbD1YWCBvdmVycmlkZXMgdGV4dD1hdXRvCiBhdHRyX2FzY2lpICgpIHsKZGlmZiAtLWdpdCBhL3QvdDAwMjgtd29ya2luZy10cmVlLWVuY29kaW5nLnNoIGIvdC90MDAyOC13b3JraW5nLXRyZWUtZW5jb2Rpbmcuc2gKaW5kZXggN2FhMDk0NS4uYmZjNGZiOSAxMDA3NTUKLS0tIGEvdC90MDAyOC13b3JraW5nLXRyZWUtZW5jb2Rpbmcuc2gKKysrIGIvdC90MDAyOC13b3JraW5nLXRyZWUtZW5jb2Rpbmcuc2gKQEAgLTE3LDcgKzE3LDcgQEAKIHdyaXRlX3V0ZjE2ICgpIHsKIAlpZiB0ZXN0X2hhdmVfcHJlcmVxIE5PX1VURjE2X0JPTQogCXRoZW4KLQkJcHJpbnRmICdceGZlXHhmZicKKwkJcHJpbnRmICdcMzc2XDM3NycKIAlmaSAmJgogCWljb252IC1mIFVURi04IC10IFVURi0xNgogfQpAQCAtMjUsNyArMjUsNyBAQAogd3JpdGVfdXRmMzIgKCkgewogCWlmIHRlc3RfaGF2ZV9wcmVyZXEgTk9fVVRGMzJfQk9NCiAJdGhlbgotCQlwcmludGYgJ1x4MDBceDAwXHhmZVx4ZmYnCisJCXByaW50ZiAnXDBcMFwzNzZcMzc3JwogCWZpICYmCiAJaWNvbnYgLWYgVVRGLTggLXQgVVRGLTMyCiB9CmRpZmYgLS1naXQgYS90L3QwMDYwLXBhdGgtdXRpbHMuc2ggYi90L3QwMDYwLXBhdGgtdXRpbHMuc2gKaW5kZXggYzdiNTNlNC4uNTUzZTk0YiAxMDA3NTUKLS0tIGEvdC90MDA2MC1wYXRoLXV0aWxzLnNoCisrKyBiL3QvdDAwNjAtcGF0aC11dGlscy5zaApAQCAtMjg1LDkgKzI4NSwxMyBAQAogdGVzdF9naXRfcGF0aCBHSVRfT0JKRUNUX0RJUkVDVE9SWT1mb28gb2JqZWN0czIgLmdpdC9vYmplY3RzMgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgY29tbW9uIHJlcG9zaXRvcnknICdnaXQgLS1naXQtZGlyPWJhciBpbml0JwogdGVzdF9naXRfcGF0aCBHSVRfQ09NTU9OX0RJUj1iYXIgaW5kZXggICAgICAgICAgICAgICAgICAgIC5naXQvaW5kZXgKK3Rlc3RfZ2l0X3BhdGggR0lUX0NPTU1PTl9ESVI9YmFyIGluZGV4LmxvY2sgICAgICAgICAgICAgICAuZ2l0L2luZGV4LmxvY2sKIHRlc3RfZ2l0X3BhdGggR0lUX0NPTU1PTl9ESVI9YmFyIEhFQUQgICAgICAgICAgICAgICAgICAgICAuZ2l0L0hFQUQKIHRlc3RfZ2l0X3BhdGggR0lUX0NPTU1PTl9ESVI9YmFyIGxvZ3MvSEVBRCAgICAgICAgICAgICAgICAuZ2l0L2xvZ3MvSEVBRAordGVzdF9naXRfcGF0aCBHSVRfQ09NTU9OX0RJUj1iYXIgbG9ncy9IRUFELmxvY2sgICAgICAgICAgIC5naXQvbG9ncy9IRUFELmxvY2sKIHRlc3RfZ2l0X3BhdGggR0lUX0NPTU1PTl9ESVI9YmFyIGxvZ3MvcmVmcy9iaXNlY3QvZm9vICAgICAuZ2l0L2xvZ3MvcmVmcy9iaXNlY3QvZm9vCit0ZXN0X2dpdF9wYXRoIEdJVF9DT01NT05fRElSPWJhciBsb2dzL3JlZnMgICAgICAgICAgICAgICAgYmFyL2xvZ3MvcmVmcwordGVzdF9naXRfcGF0aCBHSVRfQ09NTU9OX0RJUj1iYXIgbG9ncy9yZWZzLyAgICAgICAgICAgICAgIGJhci9sb2dzL3JlZnMvCiB0ZXN0X2dpdF9wYXRoIEdJVF9DT01NT05fRElSPWJhciBsb2dzL3JlZnMvYmlzZWMvZm9vICAgICAgYmFyL2xvZ3MvcmVmcy9iaXNlYy9mb28KIHRlc3RfZ2l0X3BhdGggR0lUX0NPTU1PTl9ESVI9YmFyIGxvZ3MvcmVmcy9iaXNlYyAgICAgICAgICBiYXIvbG9ncy9yZWZzL2Jpc2VjCiB0ZXN0X2dpdF9wYXRoIEdJVF9DT01NT05fRElSPWJhciBsb2dzL3JlZnMvYmlzZWN0Zm9vICAgICAgYmFyL2xvZ3MvcmVmcy9iaXNlY3Rmb28KZGlmZiAtLWdpdCBhL3QvdDA1MDAtcHJvZ3Jlc3MtZGlzcGxheS5zaCBiL3QvdDA1MDAtcHJvZ3Jlc3MtZGlzcGxheS5zaAppbmRleCAyNGNjYmQ4Li5kMmQwODhkIDEwMDc1NQotLS0gYS90L3QwNTAwLXByb2dyZXNzLWRpc3BsYXkuc2gKKysrIGIvdC90MDUwMC1wcm9ncmVzcy1kaXNwbGF5LnNoCkBAIC03Niw3ICs3Niw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Byb2dyZXNzIGRpc3BsYXkgYnJlYWtzIGxvbmcgbGluZXMgIzInICcKLQkjIE5vdGU6IHdlIGRvbnQgbmVlZCB0aGF0IG1hbnkgc3BhY2VzIGFmdGVyIHRoZSB0aXRsZSB0byBjb3ZlciB1cAorCSMgTm90ZTogd2UgZG8gbm90IG5lZWQgdGhhdCBtYW55IHNwYWNlcyBhZnRlciB0aGUgdGl0bGUgdG8gY292ZXIgdXAKIAkjIHRoZSBsYXN0IGxpbmUgYmVmb3JlIGJyZWFraW5nIHRoZSBwcm9ncmVzcyBsaW5lLgogCXNlZCAtZSAicy9aJC8vIiA+ZXhwZWN0IDw8XEVPRiAmJgogV29ya2luZyBoYXJkLi4uLi4uLjIuLi4uLi4uLi4zLi4uLi4uLi4uNC4uLi4uLi4uLjUuLi4uLi4uLi42OiAgIDAlICgxLzEwMDAwMCk8Q1I+CkBAIC0xMDQsNyArMTA0LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncHJvZ3Jlc3MgZGlzcGxheSBicmVha3MgbG9uZyBsaW5lcyAjMyAtIGV2ZW4gdGhlIGZpcnN0IGlzIHRvbyBsb25nJyAnCi0JIyBOb3RlOiB3ZSBkb250IGFjdHVhbGx5IG5lZWQgYW55IHNwYWNlcyBhdCB0aGUgZW5kIG9mIHRoZSB0aXRsZQorCSMgTm90ZTogd2UgZG8gbm90IGFjdHVhbGx5IG5lZWQgYW55IHNwYWNlcyBhdCB0aGUgZW5kIG9mIHRoZSB0aXRsZQogCSMgbGluZSwgYmVjYXVzZSB0aGVyZSBpcyBubyBwcmV2aW91cyBwcm9ncmVzcyBsaW5lIHRvIGNvdmVyIHVwLgogCXNlZCAtZSAicy9aJC8vIiA+ZXhwZWN0IDw8XEVPRiAmJgogV29ya2luZyBoYXJkLi4uLi4uLjIuLi4uLi4uLi4zLi4uLi4uLi4uNC4uLi4uLi4uLjUuLi4uLi4uLi42OiAgICAgICAgICAgICAgICAgICBaCmRpZmYgLS1naXQgYS90L3QxMDUwLWxhcmdlLnNoIGIvdC90MTA1MC1sYXJnZS5zaAppbmRleCBkY2I0ZGJiLi5kM2IyYWRiIDEwMDc1NQotLS0gYS90L3QxMDUwLWxhcmdlLnNoCisrKyBiL3QvdDEwNTAtbGFyZ2Uuc2gKQEAgLTE5NCwxNSArMTk0LDE1IEBACiAJdGVzdF9jbXAgaHVnZSBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAndGFyIGFjaGl2aW5nJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd0YXIgYXJjaGl2aW5nJyAnCiAJZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyIEhFQUQgPi9kZXYvbnVsbAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICd6aXAgYWNoaXZpbmcsIHN0b3JlIG9ubHknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ppcCBhcmNoaXZpbmcsIHN0b3JlIG9ubHknICcKIAlnaXQgYXJjaGl2ZSAtLWZvcm1hdD16aXAgLTAgSEVBRCA+L2Rldi9udWxsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ppcCBhY2hpdmluZywgZGVmbGF0ZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnemlwIGFyY2hpdmluZywgZGVmbGF0ZScgJwogCWdpdCBhcmNoaXZlIC0tZm9ybWF0PXppcCBIRUFEID4vZGV2L251bGwKICcKIApkaWZmIC0tZ2l0IGEvdC90MTMwNS1jb25maWctaW5jbHVkZS5zaCBiL3QvdDEzMDUtY29uZmlnLWluY2x1ZGUuc2gKaW5kZXggZDIwYjRkMS4uZjFlMWIyOCAxMDA3NTUKLS0tIGEvdC90MTMwNS1jb25maWctaW5jbHVkZS5zaAorKysgYi90L3QxMzA1LWNvbmZpZy1pbmNsdWRlLnNoCkBAIC02Myw3ICs2Myw3IEBACiAJdGVzdC5vbmU9MQogCUVPRgogCWdpdCBjb25maWcgLS1saXN0ID5hY3R1YWwuZnVsbCAmJgotCWdyZXAgLXYgXmNvcmUgYWN0dWFsLmZ1bGwgPmFjdHVhbCAmJgorCWdyZXAgLXYgLWUgXmNvcmUgLWUgXmV4dGVuc2lvbnMgYWN0dWFsLmZ1bGwgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIApkaWZmIC0tZ2l0IGEvdC90MTQwMC11cGRhdGUtcmVmLnNoIGIvdC90MTQwMC11cGRhdGUtcmVmLnNoCmluZGV4IDFmYmQ5NDAuLjY5YTdmMjcgMTAwNzU1Ci0tLSBhL3QvdDE0MDAtdXBkYXRlLXJlZi5zaAorKysgYi90L3QxNDAwLXVwZGF0ZS1yZWYuc2gKQEAgLTM0NCwxNCArMzQ0LDE2IEBACiAJdGVzdF9jbXAgZXhwZWN0IC5naXQvbG9ncy8kbQogJwogCi1naXQgdXBkYXRlLXJlZiAkbSAkRAotY2F0ID4uZ2l0L2xvZ3MvJG0gPDxFT0YKLSRaICRDICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPiAxMTE3MTUwMzIwIC0wNTAwCi0kQyAkQSAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4gMTExNzE1MDM1MCAtMDUwMAotJEEgJEIgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IDExMTcxNTAzODAgLTA1MDAKLSRGICRaICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPiAxMTE3MTUwNjgwIC0wNTAwCi0kWiAkRSAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4gMTExNzE1MDk4MCAtMDUwMAotRU9GCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXQgdXAgZm9yIHF1ZXJ5aW5nIHRoZSByZWZsb2cnICcKKwlnaXQgdXBkYXRlLXJlZiAkbSAkRCAmJgorCWNhdCA+LmdpdC9sb2dzLyRtIDw8LUVPRgorCSRaICRDICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPiAxMTE3MTUwMzIwIC0wNTAwCisJJEMgJEEgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IDExMTcxNTAzNTAgLTA1MDAKKwkkQSAkQiAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4gMTExNzE1MDM4MCAtMDUwMAorCSRGICRaICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPiAxMTE3MTUwNjgwIC0wNTAwCisJJFogJEUgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IDExMTcxNTA5ODAgLTA1MDAKKwlFT0YKKycKIAogZWQ9IlRodSwgMjYgTWF5IDIwMDUgMTg6MzI6MDAgLTA1MDAiCiBnZD0iVGh1LCAyNiBNYXkgMjAwNSAxODozMzowMCAtMDUwMCIKZGlmZiAtLWdpdCBhL3QvdDE0NTAtZnNjay5zaCBiL3QvdDE0NTAtZnNjay5zaAppbmRleCA1MGQyOGU2Li43YzdmZjdlIDEwMDc1NQotLS0gYS90L3QxNDUwLWZzY2suc2gKKysrIGIvdC90MTQ1MC1mc2NrLnNoCkBAIC02MTYsNyArNjE2LDcgQEAKIAkJcmVtb3ZlX29iamVjdCAkKGdpdCByZXYtcGFyc2UganVsaXVzOmNhZXNhci50KSAmJgogCQl0ZXN0X211c3RfZmFpbCBnaXQgZnNjayAtLW5hbWUtb2JqZWN0cyA+b3V0ICYmCiAJCXRyZWU9JChnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IGp1bGl1czopICYmCi0JCXRlc3RfaTE4bmdyZXAgLUUgIiR0cmVlIFwoKHJlZnMvaGVhZHMvbWFzdGVyfEhFQUQpQFx7WzAtOV0qXH06IiBvdXQKKwkJdGVzdF9pMThuZ3JlcCAiJHRyZWUgKHJlZnMvdGFncy9qdWxpdXM6IiBvdXQKIAkpCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDE1MDAtcmV2LXBhcnNlLnNoIGIvdC90MTUwMC1yZXYtcGFyc2Uuc2gKaW5kZXggMDFhYmVlNS4uMDE3N2ZkOCAxMDA3NTUKLS0tIGEvdC90MTUwMC1yZXYtcGFyc2Uuc2gKKysrIGIvdC90MTUwMC1yZXYtcGFyc2Uuc2gKQEAgLTU5LDYgKzU5LDcgQEAKIFJPT1Q9JChwd2QpCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCisJdGVzdF9vaWRfaW5pdCAmJgogCW1rZGlyIC1wIHN1Yi9kaXIgd29yayAmJgogCWNwIC1SIC5naXQgcmVwby5naXQKICcKQEAgLTEzMSw2ICsxMzIsMjAgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jldi1wYXJzZSAtLXNob3ctb2JqZWN0LWZvcm1hdCBpbiByZXBvJyAnCisJZWNobyAiJCh0ZXN0X29pZCBhbGdvKSIgPmV4cGVjdCAmJgorCWdpdCByZXYtcGFyc2UgLS1zaG93LW9iamVjdC1mb3JtYXQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwlnaXQgcmV2LXBhcnNlIC0tc2hvdy1vYmplY3QtZm9ybWF0PXN0b3JhZ2UgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwlnaXQgcmV2LXBhcnNlIC0tc2hvdy1vYmplY3QtZm9ybWF0PWlucHV0ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJZ2l0IHJldi1wYXJzZSAtLXNob3ctb2JqZWN0LWZvcm1hdD1vdXRwdXQgPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tc2hvdy1vYmplY3QtZm9ybWF0PXNxdWVhbWlzaC1vc3NpZnJhZ2UgMj5lcnIgJiYKKwlncmVwICJ1bmtub3duIG1vZGUgZm9yIC0tc2hvdy1vYmplY3QtZm9ybWF0OiBzcXVlYW1pc2gtb3NzaWZyYWdlIiBlcnIKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2hvd2luZyB0aGUgc3VwZXJwcm9qZWN0IGNvcnJlY3RseScgJwogCWdpdCByZXYtcGFyc2UgLS1zaG93LXN1cGVycHJvamVjdC13b3JraW5nLXRyZWUgPm91dCAmJgogCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQgJiYKZGlmZiAtLWdpdCBhL3QvdDE1MTItcmV2LXBhcnNlLWRpc2FtYmlndWF0aW9uLnNoIGIvdC90MTUxMi1yZXYtcGFyc2UtZGlzYW1iaWd1YXRpb24uc2gKaW5kZXggYzE5ZmI1MC4uMjU3NDRlMiAxMDA3NTUKLS0tIGEvdC90MTUxMi1yZXYtcGFyc2UtZGlzYW1iaWd1YXRpb24uc2gKKysrIGIvdC90MTUxMi1yZXYtcGFyc2UtZGlzYW1iaWd1YXRpb24uc2gKQEAgLTMzOSw3ICszMzksNyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBDX0xPQ0FMRV9PVVRQVVQgJ2FtYmlndWl0eSBoaW50cyByZXNwZWN0IHR5cGUnICcKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIDAwMDAwMDAwMF57Y29tbWl0fSAyPnN0ZGVyciAmJgogCWdyZXAgXmhpbnQ6IHN0ZGVyciA+aGludHMgJiYKLQkjIDUgY29tbWl0cywgMSB0YWcgKHdoaWNoIGlzIGEgY29tbWl0aXNoKSwgcGx1cyBpbnRybyBsaW5lCisJIyA1IGNvbW1pdHMsIDEgdGFnICh3aGljaCBpcyBhIGNvbW1pdHRpc2gpLCBwbHVzIGludHJvIGxpbmUKIAl0ZXN0X2xpbmVfY291bnQgPSA3IGhpbnRzCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDI0MDAtd29ya3RyZWUtYWRkLnNoIGIvdC90MjQwMC13b3JrdHJlZS1hZGQuc2gKaW5kZXggZTgxOWJhNy4uOGE5ODMxNCAxMDA3NTUKLS0tIGEvdC90MjQwMC13b3JrdHJlZS1hZGQuc2gKKysrIGIvdC90MjQwMC13b3JrdHJlZS1hZGQuc2gKQEAgLTU4Nyw0ICs1ODcsMjggQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJhZGQiIHdpdGggdW5pbml0aWFsaXplZCBzdWJtb2R1bGUsIHdpdGggc3VibW9kdWxlLnJlY3Vyc2UgdW5zZXQnICcKKwl0ZXN0X2NyZWF0ZV9yZXBvIHN1Ym1vZHVsZSAmJgorCXRlc3RfY29tbWl0IC1DIHN1Ym1vZHVsZSBmaXJzdCAmJgorCXRlc3RfY3JlYXRlX3JlcG8gcHJvamVjdCAmJgorCWdpdCAtQyBwcm9qZWN0IHN1Ym1vZHVsZSBhZGQgLi4vc3VibW9kdWxlICYmCisJZ2l0IC1DIHByb2plY3QgYWRkIHN1Ym1vZHVsZSAmJgorCXRlc3RfdGljayAmJgorCWdpdCAtQyBwcm9qZWN0IGNvbW1pdCAtbSBhZGRfc3ViICYmCisJZ2l0IGNsb25lIHByb2plY3QgcHJvamVjdC1jbG9uZSAmJgorCWdpdCAtQyBwcm9qZWN0LWNsb25lIHdvcmt0cmVlIGFkZCAuLi9wcm9qZWN0LTIKKycKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyJhZGQiIHdpdGggdW5pbml0aWFsaXplZCBzdWJtb2R1bGUsIHdpdGggc3VibW9kdWxlLnJlY3Vyc2Ugc2V0JyAnCisJZ2l0IC1DIHByb2plY3QtY2xvbmUgLWMgc3VibW9kdWxlLnJlY3Vyc2Ugd29ya3RyZWUgYWRkIC4uL3Byb2plY3QtMworJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciYWRkIiB3aXRoIGluaXRpYWxpemVkIHN1Ym1vZHVsZSwgd2l0aCBzdWJtb2R1bGUucmVjdXJzZSB1bnNldCcgJworCWdpdCAtQyBwcm9qZWN0LWNsb25lIHN1Ym1vZHVsZSB1cGRhdGUgLS1pbml0ICYmCisJZ2l0IC1DIHByb2plY3QtY2xvbmUgd29ya3RyZWUgYWRkIC4uL3Byb2plY3QtNAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICciYWRkIiB3aXRoIGluaXRpYWxpemVkIHN1Ym1vZHVsZSwgd2l0aCBzdWJtb2R1bGUucmVjdXJzZSBzZXQnICcKKwlnaXQgLUMgcHJvamVjdC1jbG9uZSAtYyBzdWJtb2R1bGUucmVjdXJzZSB3b3JrdHJlZSBhZGQgLi4vcHJvamVjdC01CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzA2MC1scy1maWxlcy13aXRoLXRyZWUuc2ggYi90L3QzMDYwLWxzLWZpbGVzLXdpdGgtdHJlZS5zaAppbmRleCA0NGYzNzhjLi41MmVkNjY1IDEwMDc1NQotLS0gYS90L3QzMDYwLWxzLWZpbGVzLXdpdGgtdHJlZS5zaAorKysgYi90L3QzMDYwLWxzLWZpbGVzLXdpdGgtdHJlZS5zaApAQCAtNDcsNyArNDcsNyBAQAogCWdpdCBhZGQgLgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgLWxzLWZpbGVzIC0td2l0aC10cmVlIHNob3VsZCBzdWNjZWVkIGZyb20gc3ViZGlyJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdnaXQgbHMtZmlsZXMgLS13aXRoLXRyZWUgc2hvdWxkIHN1Y2NlZWQgZnJvbSBzdWJkaXInICcKIAkjIFdlIGhhdmUgdG8gcnVuIGZyb20gYSBzdWItZGlyZWN0b3J5IHRvIHRyaWdnZXIgcHJ1bmVfcGF0aAogCSMgVGhlbiB3ZSBmaW5hbGx5IGdldCB0byBydW4gb3VyIC0td2l0aC10cmVlIHRlc3QKIAkoCkBAIC01Nyw3ICs1Nyw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotICAgICdnaXQgLWxzLWZpbGVzIC0td2l0aC10cmVlIHNob3VsZCBhZGQgZW50cmllcyBmcm9tIG5hbWVkIHRyZWUuJyBcCisgICAgJ2dpdCBscy1maWxlcyAtLXdpdGgtdHJlZSBzaG91bGQgYWRkIGVudHJpZXMgZnJvbSBuYW1lZCB0cmVlLicgXAogICAgICd0ZXN0X2NtcCBleHBlY3RlZCBvdXRwdXQnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzIxMC1wYWNrLXJlZnMuc2ggYi90L3QzMjEwLXBhY2stcmVmcy5zaAppbmRleCA5ZWE1ZmE0Li5mNDFiMmFmIDEwMDc1NQotLS0gYS90L3QzMjEwLXBhY2stcmVmcy5zaAorKysgYi90L3QzMjEwLXBhY2stcmVmcy5zaApAQCAtMjQwLDcgKzI0MCw3IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgU1lNTElOS1MgJ3BhY2sgc3ltbGlua2VkIHBhY2tlZC1yZWZzJyAnCiAJIyBGaXJzdCBtYWtlIHN1cmUgdGhhdCBzeW1saW5raW5nIHdvcmtzIHdoZW4gcmVhZGluZzoKLQlnaXQgdXBkYXRlLXJlZiByZWZzL2hlYWRzL2xvb3N5IHJlZnMvaGVhZHMvbWFzdGVyICYmCisJZ2l0IHVwZGF0ZS1yZWYgcmVmcy9oZWFkcy9sb3NzeSByZWZzL2hlYWRzL21hc3RlciAmJgogCWdpdCBmb3ItZWFjaC1yZWYgPmFsbC1yZWZzLWJlZm9yZSAmJgogCW12IC5naXQvcGFja2VkLXJlZnMgLmdpdC9teS1kZXZpYW50LXBhY2tlZC1yZWZzICYmCiAJbG4gLXMgbXktZGV2aWFudC1wYWNrZWQtcmVmcyAuZ2l0L3BhY2tlZC1yZWZzICYmCmRpZmYgLS1naXQgYS90L3QzMzAxLW5vdGVzLnNoIGIvdC90MzMwMS1ub3Rlcy5zaAppbmRleCBkM2ZhMjk4Li5kNjZhNWY2IDEwMDc1NQotLS0gYS90L3QzMzAxLW5vdGVzLnNoCisrKyBiL3QvdDMzMDEtbm90ZXMuc2gKQEAgLTg2NCw2ICs4NjQsMjQgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnY29weSBub3RlIHdpdGggImdpdCBub3RlcyBjb3B5IicgJworCWNvbW1pdD0kKGdpdCByZXYtcGFyc2UgNHRoKSAmJgorCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgorCQljb21taXQgJGNvbW1pdAorCQlBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CisJCURhdGU6ICAgVGh1IEFwciA3IDE1OjE2OjEzIDIwMDUgLTA3MDAKKworCQkke2luZGVudH00dGgKKworCQlOb3RlczoKKwkJJHtpbmRlbnR9VGhpcyBpcyBhIGJsb2Igb2JqZWN0CisJRU9GCisJZ2l0IG5vdGVzIGNvcHkgOHRoIDR0aCAmJgorCWdpdCBsb2cgM3JkLi40dGggPmFjdHVhbCAmJgorCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKKwl0ZXN0ICIkKGdpdCBub3RlIGxpc3QgNHRoKSIgPSAiJChnaXQgbm90ZSBsaXN0IDh0aCkiCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvcHkgbm90ZSB3aXRoICJnaXQgbm90ZXMgY29weSIgd2l0aCBkZWZhdWx0JyAnCiAJdGVzdF9jb21taXQgMTF0aCAmJgogCWNvbW1pdD0kKGdpdCByZXYtcGFyc2UgSEVBRCkgJiYKIAljYXQgPmV4cGVjdCA8PC1FT0YgJiYKQEAgLTg3OCw3ICs4OTYsNyBAQAogCQkke2luZGVudH0KIAkJJHtpbmRlbnR9eWV0IGFub3RoZXIgbm90ZQogCUVPRgotCWdpdCBub3RlcyBjb3B5IEhFQUReIEhFQUQgJiYKKwlnaXQgbm90ZXMgY29weSBIRUFEXiAmJgogCWdpdCBsb2cgLTEgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwgJiYKIAl0ZXN0ICIkKGdpdCBub3RlcyBsaXN0IEhFQUQpIiA9ICIkKGdpdCBub3RlcyBsaXN0IEhFQUReKSIKQEAgLTkwMSwxMSArOTE5LDI5IEBACiAJCSR7aW5kZW50fTExdGgKIAogCQlOb3RlczoKKwkJJHtpbmRlbnR9VGhpcyBpcyBhIGJsb2Igb2JqZWN0CisJRU9GCisJZ2l0IG5vdGVzIGNvcHkgLWYgSEVBRH4zIEhFQUQgJiYKKwlnaXQgbG9nIC0xID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisJdGVzdCAiJChnaXQgbm90ZXMgbGlzdCBIRUFEKSIgPSAiJChnaXQgbm90ZXMgbGlzdCBIRUFEfjMpIgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhbGxvdyBvdmVyd3JpdGUgd2l0aCAiZ2l0IG5vdGVzIGNvcHkgLWYiIHdpdGggZGVmYXVsdCcgJworCWNvbW1pdD0kKGdpdCByZXYtcGFyc2UgSEVBRCkgJiYKKwljYXQgPmV4cGVjdCA8PC1FT0YgJiYKKwkJY29tbWl0ICRjb21taXQKKwkJQXV0aG9yOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgorCQlEYXRlOiAgIFRodSBBcHIgNyAxNToyMzoxMyAyMDA1IC0wNzAwCisKKwkJJHtpbmRlbnR9MTF0aAorCisJCU5vdGVzOgogCQkke2luZGVudH15ZXQgYW5vdGhlciBub3RlCiAJCSR7aW5kZW50fQogCQkke2luZGVudH15ZXQgYW5vdGhlciBub3RlCiAJRU9GCi0JZ2l0IG5vdGVzIGNvcHkgLWYgSEVBRH4yIEhFQUQgJiYKKwlnaXQgbm90ZXMgY29weSAtZiBIRUFEfjIgJiYKIAlnaXQgbG9nIC0xID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCiAJdGVzdCAiJChnaXQgbm90ZXMgbGlzdCBIRUFEKSIgPSAiJChnaXQgbm90ZXMgbGlzdCBIRUFEfjIpIgpAQCAtMTE2Nyw4ICsxMjAzLDEwIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBub3RlcyBjb3B5IGRpYWdub3NlcyB0b28gbWFueSBvciB0b28gZmV3IHBhcmFtZXRlcnMnICcKLQl0ZXN0X211c3RfZmFpbCBnaXQgbm90ZXMgY29weSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCBub3RlcyBjb3B5IG9uZSB0d28gdGhyZWUKKwl0ZXN0X211c3RfZmFpbCBnaXQgbm90ZXMgY29weSAyPmVycm9yICYmCisJdGVzdF9pMThuZ3JlcCAidG9vIGZldyBwYXJhbWV0ZXJzIiBlcnJvciAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBub3RlcyBjb3B5IG9uZSB0d28gdGhyZWUgMj5lcnJvciAmJgorCXRlc3RfaTE4bmdyZXAgInRvbyBtYW55IHBhcmFtZXRlcnMiIGVycm9yCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBub3RlcyBnZXQtcmVmIGV4cGFuZHMgcmVmcy9oZWFkcy9tYXN0ZXIgdG8gcmVmcy9ub3Rlcy9yZWZzL2hlYWRzL21hc3RlcicgJwpkaWZmIC0tZ2l0IGEvdC90MzQwNC1yZWJhc2UtaW50ZXJhY3RpdmUuc2ggYi90L3QzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaAppbmRleCBkMmRmYmU0Li5iZjBkYzc1IDEwMDc1NQotLS0gYS90L3QzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaAorKysgYi90L3QzNDA0LXJlYmFzZS1pbnRlcmFjdGl2ZS5zaApAQCAtNzYsOCArNzYsMTEgQEAKIAljYXQgPmV4cGVjdCA8PC1cRU9GICYmCiAJZXJyb3I6IG5vdGhpbmcgdG8gZG8KIAlFT0YKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0iMSBleGVjX3RydWUiIGdpdCByZWJhc2UgLWkgSEVBRF4gPmFjdHVhbCAyPiYxICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9IjEgZXhlY190cnVlIiBcCisJCQlnaXQgcmViYXNlIC1pIEhFQUReID5hY3R1YWwgMj4mMQorCSkgJiYKIAl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbAogJwogCkBAIC0xMzYsOCArMTM5LDExIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSB3aXRoIHRoZSBleGVjIGNvbW1hbmQgY2hlY2tzIHRyZWUgY2xlYW5uZXNzJyAnCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSJleGVjX2VjaG9fZm9vXz5maWxlMSAxIiBnaXQgcmViYXNlIC1pIEhFQUReICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9ImV4ZWNfZWNob19mb29fPmZpbGUxIDEiIFwKKwkJCWdpdCByZWJhc2UgLWkgSEVBRF4KKwkpICYmCiAJdGVzdF9jbXBfcmV2IG1hc3Rlcl4gSEVBRCAmJgogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUKQEAgLTE2Myw5ICsxNjksMTEgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSB3aXRoIGV4ZWMgb2YgaW5leGlzdGVudCBjb21tYW5kJyAnCiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSJleGVjX3RoaXMtY29tbWFuZC1kb2VzLW5vdC1leGlzdCAxIiBcCi0JZ2l0IHJlYmFzZSAtaSBIRUFEXiA+YWN0dWFsIDI+JjEgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0iZXhlY190aGlzLWNvbW1hbmQtZG9lcy1ub3QtZXhpc3QgMSIgXAorCQkJZ2l0IHJlYmFzZSAtaSBIRUFEXiA+YWN0dWFsIDI+JjEKKwkpICYmCiAJISBncmVwICJNYXliZSBnaXQtcmViYXNlIGlzIGJyb2tlbiIgYWN0dWFsCiAnCiAKQEAgLTE3Niw3ICsxODQsNiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdubyBjaGFuZ2VzIGFyZSBhIG5vcCcgJwogCWdpdCBjaGVja291dCBicmFuY2gyICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCiAJZ2l0IHJlYmFzZSAtaSBGICYmCiAJdGVzdCAiJChnaXQgc3ltYm9saWMtcmVmIC1xIEhFQUQpIiA9ICJyZWZzL2hlYWRzL2JyYW5jaDIiICYmCiAJdGVzdCAkKGdpdCByZXYtcGFyc2UgSSkgPSAkKGdpdCByZXYtcGFyc2UgSEVBRCkKQEAgLTE4Niw3ICsxOTMsNiBAQAogCWdpdCBjaGVja291dCAtYiBkZWFkLWVuZCAmJgogCWdpdCBybSBmaWxlNiAmJgogCWdpdCBjb21taXQgLW0gInN0b3AgaGVyZSIgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAlnaXQgcmViYXNlIC1pIEYgYnJhbmNoMiAmJgogCXRlc3QgIiQoZ2l0IHN5bWJvbGljLXJlZiAtcSBIRUFEKSIgPSAicmVmcy9oZWFkcy9icmFuY2gyIiAmJgogCXRlc3QgJChnaXQgcmV2LXBhcnNlIEkpID0gJChnaXQgcmV2LXBhcnNlIGJyYW5jaDIpICYmCkBAIC0xOTUsNyArMjAxLDYgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndGVzdCAtLW9udG8gPGJyYW5jaD4nICcKIAlnaXQgY2hlY2tvdXQgLWIgdGVzdC1vbnRvIGJyYW5jaDIgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAlnaXQgcmViYXNlIC1pIC0tb250byBicmFuY2gxIEYgJiYKIAl0ZXN0ICIkKGdpdCBzeW1ib2xpYy1yZWYgLXEgSEVBRCkiID0gInJlZnMvaGVhZHMvdGVzdC1vbnRvIiAmJgogCXRlc3QgJChnaXQgcmV2LXBhcnNlIEhFQUReKSA9ICQoZ2l0IHJldi1wYXJzZSBicmFuY2gxKSAmJgpAQCAtMjA1LDcgKzIxMCw2IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2Ugb24gdG9wIG9mIGEgbm9uLWNvbmZsaWN0aW5nIGNvbW1pdCcgJwogCWdpdCBjaGVja291dCBicmFuY2gxICYmCiAJZ2l0IHRhZyBvcmlnaW5hbC1icmFuY2gxICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCiAJZ2l0IHJlYmFzZSAtaSBicmFuY2gyICYmCiAJdGVzdCBmaWxlNiA9ICQoZ2l0IGRpZmYgLS1uYW1lLW9ubHkgb3JpZ2luYWwtYnJhbmNoMSkgJiYKIAl0ZXN0ICIkKGdpdCBzeW1ib2xpYy1yZWYgLXEgSEVBRCkiID0gInJlZnMvaGVhZHMvYnJhbmNoMSIgJiYKQEAgLTIyNSw4ICsyMjksMTAgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZXhjaGFuZ2UgdHdvIGNvbW1pdHMnICcKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSIyIDEiIGdpdCByZWJhc2UgLWkgSEVBRH4yICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iMiAxIiBnaXQgcmViYXNlIC1pIEhFQUR+MgorCSkgJiYKIAl0ZXN0IEggPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRF4gfCBzZWQgLW5lIFwkcCkgJiYKIAl0ZXN0IEcgPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgXCRwKSAmJgogCWJsb2IxPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUReOmZpbGUxKSAmJgpAQCAtMjUyLDcgKzI1OCw2IEBACiAJPj4+Pj4+PiAkY29tbWl0Li4uIEcKIAlFT0YKIAlnaXQgdGFnIG5ldy1icmFuY2gxICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtaSBtYXN0ZXIgJiYKIAl0ZXN0ICIkKGdpdCByZXYtcGFyc2UgSEVBRH4zKSIgPSAiJChnaXQgcmV2LXBhcnNlIG1hc3RlcikiICYmCiAJdGVzdF9jbXAgZXhwZWN0IC5naXQvcmViYXNlLW1lcmdlL3BhdGNoICYmCkBAIC0yODEsNyArMjg2LDYgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Fib3J0IHdpdGggZXJyb3Igd2hlbiBuZXcgYmFzZSBjYW5ub3QgYmUgY2hlY2tlZCBvdXQnICcKIAlnaXQgcm0gLS1jYWNoZWQgZmlsZTEgJiYKIAlnaXQgY29tbWl0IC1tICJyZW1vdmUgZmlsZSBpbiBiYXNlIiAmJgotCXNldF9mYWtlX2VkaXRvciAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgbWFzdGVyID4gb3V0cHV0IDI+JjEgJiYKIAl0ZXN0X2kxOG5ncmVwICJUaGUgZm9sbG93aW5nIHVudHJhY2tlZCB3b3JraW5nIHRyZWUgZmlsZXMgd291bGQgYmUgb3ZlcndyaXR0ZW4gYnkgY2hlY2tvdXQ6IiBcCiAJCW91dHB1dCAmJgpAQCAtMjk2LDcgKzMwMCw2IEBACiAJdGVzdF90aWNrICYmCiAJR0lUX0FVVEhPUl9OQU1FPSJUd2VycCBTbm9nIiBnaXQgY29tbWl0IC1tICJkaWZmZXJlbnQgYXV0aG9yIiAmJgogCWdpdCB0YWcgdHdlcnAgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAlnaXQgcmViYXNlIC1pIC0tb250byBtYXN0ZXIgSEVBRF4gJiYKIAlnaXQgc2hvdyBIRUFEIHwgZ3JlcCAiXkF1dGhvcjogVHdlcnAgU25vZyIKICcKQEAgLTMxNCw3ICszMTcsNiBAQAogCXRlc3RfY29tbWl0IGIgY29uZmxpY3QgYiBjb25mbGljdC1iICYmCiAJR0lUX0FVVEhPUl9OQU1FPSRvR0lUX0FVVEhPUl9OQU1FICYmCiAKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1pIGNvbmZsaWN0LWEgJiYKIAllY2hvIHJlc29sdmVkID5jb25mbGljdCAmJgogCWdpdCBhZGQgY29uZmxpY3QgJiYKQEAgLTMzMCw5ICszMzIsMTEgQEAKIAl0ZXN0X3RpY2sgJiYKIAlHSVRfQVVUSE9SX05BTUU9Ik5pdGZvbCIgZ2l0IGNvbW1pdCAtbSAibml0Zm9sIiBmaWxlNyAmJgogCWVjaG8gIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSIxIHNxdWFzaCAyIiBFWFBFQ1RfSEVBREVSX0NPVU5UPTIgXAotCQlnaXQgcmViYXNlIC1pIC0tb250byBtYXN0ZXIgSEVBRH4yICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iMSBzcXVhc2ggMiIgRVhQRUNUX0hFQURFUl9DT1VOVD0yIFwKKwkJCWdpdCByZWJhc2UgLWkgLS1vbnRvIG1hc3RlciBIRUFEfjIKKwkpICYmCiAJdGVzdCBCID0gJChjYXQgZmlsZTcpICYmCiAJdGVzdCAkKGdpdCByZXYtcGFyc2UgSEVBRF4pID0gJChnaXQgcmV2LXBhcnNlIG1hc3RlcikKICcKQEAgLTM0Myw3ICszNDcsNiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFJFQkFTRV9QICctcCBoYW5kbGVzICJubyBjaGFuZ2VzIiBncmFjZWZ1bGx5JyAnCiAJSEVBRD0kKGdpdCByZXYtcGFyc2UgSEVBRCkgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAlnaXQgcmViYXNlIC1pIC1wIEhFQUReICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2ggJiYKIAlnaXQgZGlmZi1maWxlcyAtLXF1aWV0ICYmCkBAIC0zNTMsOCArMzU2LDEwIEBACiAKIHRlc3RfZXhwZWN0X2ZhaWx1cmUgUkVCQVNFX1AgJ2V4Y2hhbmdlIHR3byBjb21taXRzIHdpdGggLXAnICcKIAlnaXQgY2hlY2tvdXQgSCAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9IjIgMSIgZ2l0IHJlYmFzZSAtaSAtcCBIRUFEfjIgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSIyIDEiIGdpdCByZWJhc2UgLWkgLXAgSEVBRH4yCisJKSAmJgogCXRlc3QgSCA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEXiB8IHNlZCAtbmUgXCRwKSAmJgogCXRlc3QgRyA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgc2VkIC1uZSBcJHApCiAnCkBAIC0zODgsNyArMzkzLDYgQEAKIAlnaXQgY29tbWl0IC1tIE0gZmlsZTEgJiYKIAlnaXQgY2hlY2tvdXQgLWIgdG8tYmUtcmViYXNlZCAmJgogCXRlc3RfdGljayAmJgotCXNldF9mYWtlX2VkaXRvciAmJgogCWdpdCByZWJhc2UgLWkgLXAgLS1vbnRvIGJyYW5jaDEgbWFzdGVyICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlZnJlc2ggJiYKIAlnaXQgZGlmZi1maWxlcyAtLXF1aWV0ICYmCkBAIC00MDMsOCArNDA3LDEwIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgUkVCQVNFX1AgJ2VkaXQgYW5jZXN0b3Igd2l0aCAtcCcgJwotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9IjEgMiBlZGl0IDMgNCIgZ2l0IHJlYmFzZSAtaSAtcCBIRUFEfjMgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSIxIDIgZWRpdCAzIDQiIGdpdCByZWJhc2UgLWkgLXAgSEVBRH4zCisJKSAmJgogCWVjaG8gMiA+IHVucmVsYXRlZC1maWxlICYmCiAJdGVzdF90aWNrICYmCiAJZ2l0IGNvbW1pdCAtbSBMMi1tb2RpZmllZCAtLWFtZW5kIHVucmVsYXRlZC1maWxlICYmCkBAIC00MTgsMTEgKzQyNCwxMyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1jb250aW51ZSB0cmllcyB0byBjb21taXQnICcKIAlnaXQgcmVzZXQgLS1oYXJkIEQgJiYKIAl0ZXN0X3RpY2sgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1pIC0tb250byBuZXctYnJhbmNoMSBIRUFEXiAmJgotCWVjaG8gcmVzb2x2ZWQgPiBmaWxlMSAmJgotCWdpdCBhZGQgZmlsZTEgJiYKLQlGQUtFX0NPTU1JVF9NRVNTQUdFPSJjaG91ZXR0ZSEiIGdpdCByZWJhc2UgLS1jb250aW51ZSAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgLS1vbnRvIG5ldy1icmFuY2gxIEhFQUReICYmCisJCWVjaG8gcmVzb2x2ZWQgPiBmaWxlMSAmJgorCQlnaXQgYWRkIGZpbGUxICYmCisJCUZBS0VfQ09NTUlUX01FU1NBR0U9ImNob3VldHRlISIgZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCisJKSAmJgogCXRlc3QgJChnaXQgcmV2LXBhcnNlIEhFQUReKSA9ICQoZ2l0IHJldi1wYXJzZSBuZXctYnJhbmNoMSkgJiYKIAlnaXQgc2hvdyBIRUFEIHwgZ3JlcCBjaG91ZXR0ZQogJwpAQCAtNDMwLDcgKzQzOCw2IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJib3NlIGZsYWcgaXMgaGVlZGVkLCBldmVuIGFmdGVyIC0tY29udGludWUnICcKIAlnaXQgcmVzZXQgLS1oYXJkIG1hc3RlckB7MX0gJiYKIAl0ZXN0X3RpY2sgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC12IC1pIC0tb250byBuZXctYnJhbmNoMSBIRUFEXiAmJgogCWVjaG8gcmVzb2x2ZWQgPiBmaWxlMSAmJgogCWdpdCBhZGQgZmlsZTEgJiYKQEAgLTQ0MCwxMCArNDQ3LDEzIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgQ19MT0NBTEVfT1VUUFVUICdtdWx0aS1zcXVhc2ggb25seSBmaXJlcyB1cCBlZGl0b3Igb25jZScgJwogCWJhc2U9JChnaXQgcmV2LXBhcnNlIEhFQUR+NCkgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0NPTU1JVF9BTUVORD0iT05DRSIgRkFLRV9MSU5FUz0iMSBzcXVhc2ggMiBzcXVhc2ggMyBzcXVhc2ggNCIgXAotCQlFWFBFQ1RfSEVBREVSX0NPVU5UPTQgXAotCQlnaXQgcmViYXNlIC1pICRiYXNlICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9DT01NSVRfQU1FTkQ9Ik9OQ0UiIFwKKwkJCUZBS0VfTElORVM9IjEgc3F1YXNoIDIgc3F1YXNoIDMgc3F1YXNoIDQiIFwKKwkJCUVYUEVDVF9IRUFERVJfQ09VTlQ9NCBcCisJCQlnaXQgcmViYXNlIC1pICRiYXNlCisJKSAmJgogCXRlc3QgJGJhc2UgPSAkKGdpdCByZXYtcGFyc2UgSEVBRF4pICYmCiAJdGVzdCAxID0gJChnaXQgc2hvdyB8IGdyZXAgT05DRSB8IHdjIC1sKQogJwpAQCAtNDUxLDkgKzQ2MSwxMiBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBDX0xPQ0FMRV9PVVRQVVQgJ211bHRpLWZpeHVwIGRvZXMgbm90IGZpcmUgdXAgZWRpdG9yJyAnCiAJZ2l0IGNoZWNrb3V0IC1iIG11bHRpLWZpeHVwIEUgJiYKIAliYXNlPSQoZ2l0IHJldi1wYXJzZSBIRUFEfjQpICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JRkFLRV9DT01NSVRfQU1FTkQ9Ik5FVkVSIiBGQUtFX0xJTkVTPSIxIGZpeHVwIDIgZml4dXAgMyBmaXh1cCA0IiBcCi0JCWdpdCByZWJhc2UgLWkgJGJhc2UgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0NPTU1JVF9BTUVORD0iTkVWRVIiIFwKKwkJCUZBS0VfTElORVM9IjEgZml4dXAgMiBmaXh1cCAzIGZpeHVwIDQiIFwKKwkJCWdpdCByZWJhc2UgLWkgJGJhc2UKKwkpICYmCiAJdGVzdCAkYmFzZSA9ICQoZ2l0IHJldi1wYXJzZSBIRUFEXikgJiYKIAl0ZXN0IDAgPSAkKGdpdCBzaG93IHwgZ3JlcCBORVZFUiB8IHdjIC1sKSAmJgogCWdpdCBjaGVja291dCBAey0xfSAmJgpAQCAtNDYzLDEyICs0NzYsMTUgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCBtZXNzYWdlIHVzZWQgYWZ0ZXIgY29uZmxpY3QnICcKIAlnaXQgY2hlY2tvdXQgLWIgY29uZmxpY3QtZml4dXAgY29uZmxpY3QtYnJhbmNoICYmCiAJYmFzZT0kKGdpdCByZXYtcGFyc2UgSEVBRH40KSAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSIxIGZpeHVwIDMgZml4dXAgNCIgZ2l0IHJlYmFzZSAtaSAkYmFzZSAmJgotCWVjaG8gdGhyZWUgPiBjb25mbGljdCAmJgotCWdpdCBhZGQgY29uZmxpY3QgJiYKLQlGQUtFX0NPTU1JVF9BTUVORD0iT05DRSIgRVhQRUNUX0hFQURFUl9DT1VOVD0yIFwKLQkJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9IjEgZml4dXAgMyBmaXh1cCA0IiBcCisJCQlnaXQgcmViYXNlIC1pICRiYXNlICYmCisJCWVjaG8gdGhyZWUgPiBjb25mbGljdCAmJgorCQlnaXQgYWRkIGNvbmZsaWN0ICYmCisJCUZBS0VfQ09NTUlUX0FNRU5EPSJPTkNFIiBFWFBFQ1RfSEVBREVSX0NPVU5UPTIgXAorCQkJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCisJKSAmJgogCXRlc3QgJGJhc2UgPSAkKGdpdCByZXYtcGFyc2UgSEVBRF4pICYmCiAJdGVzdCAxID0gJChnaXQgc2hvdyB8IGdyZXAgT05DRSB8IHdjIC1sKSAmJgogCWdpdCBjaGVja291dCBAey0xfSAmJgpAQCAtNDc4LDEyICs0OTQsMTUgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1pdCBtZXNzYWdlIHJldGFpbmVkIGFmdGVyIGNvbmZsaWN0JyAnCiAJZ2l0IGNoZWNrb3V0IC1iIGNvbmZsaWN0LXNxdWFzaCBjb25mbGljdC1icmFuY2ggJiYKIAliYXNlPSQoZ2l0IHJldi1wYXJzZSBIRUFEfjQpICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9IjEgZml4dXAgMyBzcXVhc2ggNCIgZ2l0IHJlYmFzZSAtaSAkYmFzZSAmJgotCWVjaG8gdGhyZWUgPiBjb25mbGljdCAmJgotCWdpdCBhZGQgY29uZmxpY3QgJiYKLQlGQUtFX0NPTU1JVF9BTUVORD0iVFdJQ0UiIEVYUEVDVF9IRUFERVJfQ09VTlQ9MiBcCi0JCWdpdCByZWJhc2UgLS1jb250aW51ZSAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSIxIGZpeHVwIDMgc3F1YXNoIDQiIFwKKwkJCWdpdCByZWJhc2UgLWkgJGJhc2UgJiYKKwkJZWNobyB0aHJlZSA+IGNvbmZsaWN0ICYmCisJCWdpdCBhZGQgY29uZmxpY3QgJiYKKwkJRkFLRV9DT01NSVRfQU1FTkQ9IlRXSUNFIiBFWFBFQ1RfSEVBREVSX0NPVU5UPTIgXAorCQkJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCisJKSAmJgogCXRlc3QgJGJhc2UgPSAkKGdpdCByZXYtcGFyc2UgSEVBRF4pICYmCiAJdGVzdCAyID0gJChnaXQgc2hvdyB8IGdyZXAgVFdJQ0UgfCB3YyAtbCkgJiYKIAlnaXQgY2hlY2tvdXQgQHstMX0gJiYKQEAgLTUwMCwxMCArNTE5LDEzIEBACiAJRU9GCiAJZ2l0IGNoZWNrb3V0IC1iIHNxdWFzaC1maXh1cCBFICYmCiAJYmFzZT0kKGdpdCByZXYtcGFyc2UgSEVBRH40KSAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfQ09NTUlUX0FNRU5EPSJPTkNFIiBGQUtFX0xJTkVTPSIxIGZpeHVwIDIgc3F1YXNoIDMgZml4dXAgNCIgXAotCQlFWFBFQ1RfSEVBREVSX0NPVU5UPTQgXAotCQlnaXQgcmViYXNlIC1pICRiYXNlICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9DT01NSVRfQU1FTkQ9Ik9OQ0UiIFwKKwkJCUZBS0VfTElORVM9IjEgZml4dXAgMiBzcXVhc2ggMyBmaXh1cCA0IiBcCisJCQlFWFBFQ1RfSEVBREVSX0NPVU5UPTQgXAorCQkJZ2l0IHJlYmFzZSAtaSAkYmFzZQorCSkgJiYKIAlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBzZWQgLWUgMSwvXlwkL2QgPiBhY3R1YWwtc3F1YXNoLWZpeHVwICYmCiAJdGVzdF9jbXAgZXhwZWN0LXNxdWFzaC1maXh1cCBhY3R1YWwtc3F1YXNoLWZpeHVwICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEQHsyfSB8CkBAIC01MTcsMTAgKzUzOSwxMyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBDX0xPQ0FMRV9PVVRQVVQgJ3NxdWFzaCBpZ25vcmVzIGNvbW1lbnRzJyAnCiAJZ2l0IGNoZWNrb3V0IC1iIHNraXAtY29tbWVudHMgRSAmJgogCWJhc2U9JChnaXQgcmV2LXBhcnNlIEhFQUR+NCkgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0NPTU1JVF9BTUVORD0iT05DRSIgRkFLRV9MSU5FUz0iIyAxICMgc3F1YXNoIDIgIyBzcXVhc2ggMyAjIHNxdWFzaCA0ICMiIFwKLQkJRVhQRUNUX0hFQURFUl9DT1VOVD00IFwKLQkJZ2l0IHJlYmFzZSAtaSAkYmFzZSAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCUZBS0VfQ09NTUlUX0FNRU5EPSJPTkNFIiBcCisJCQlGQUtFX0xJTkVTPSIjIDEgIyBzcXVhc2ggMiAjIHNxdWFzaCAzICMgc3F1YXNoIDQgIyIgXAorCQkJRVhQRUNUX0hFQURFUl9DT1VOVD00IFwKKwkJCWdpdCByZWJhc2UgLWkgJGJhc2UKKwkpICYmCiAJdGVzdCAkYmFzZSA9ICQoZ2l0IHJldi1wYXJzZSBIRUFEXikgJiYKIAl0ZXN0IDEgPSAkKGdpdCBzaG93IHwgZ3JlcCBPTkNFIHwgd2MgLWwpICYmCiAJZ2l0IGNoZWNrb3V0IEB7LTF9ICYmCkBAIC01MzAsMTAgKzU1NSwxMyBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyBDX0xPQ0FMRV9PVVRQVVQgJ3NxdWFzaCBpZ25vcmVzIGJsYW5rIGxpbmVzJyAnCiAJZ2l0IGNoZWNrb3V0IC1iIHNraXAtYmxhbmstbGluZXMgRSAmJgogCWJhc2U9JChnaXQgcmV2LXBhcnNlIEhFQUR+NCkgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0NPTU1JVF9BTUVORD0iT05DRSIgRkFLRV9MSU5FUz0iPiAxID4gc3F1YXNoIDIgPiBzcXVhc2ggMyA+IHNxdWFzaCA0ID4iIFwKLQkJRVhQRUNUX0hFQURFUl9DT1VOVD00IFwKLQkJZ2l0IHJlYmFzZSAtaSAkYmFzZSAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCUZBS0VfQ09NTUlUX0FNRU5EPSJPTkNFIiBcCisJCQlGQUtFX0xJTkVTPSI+IDEgPiBzcXVhc2ggMiA+IHNxdWFzaCAzID4gc3F1YXNoIDQgPiIgXAorCQkJRVhQRUNUX0hFQURFUl9DT1VOVD00IFwKKwkJCWdpdCByZWJhc2UgLWkgJGJhc2UKKwkpICYmCiAJdGVzdCAkYmFzZSA9ICQoZ2l0IHJldi1wYXJzZSBIRUFEXikgJiYKIAl0ZXN0IDEgPSAkKGdpdCBzaG93IHwgZ3JlcCBPTkNFIHwgd2MgLWwpICYmCiAJZ2l0IGNoZWNrb3V0IEB7LTF9ICYmCkBAIC01NDMsMTcgKzU3MSwyMSBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3F1YXNoIHdvcmtzIGFzIGV4cGVjdGVkJyAnCiAJZ2l0IGNoZWNrb3V0IC1iIHNxdWFzaC13b3JrcyBuby1jb25mbGljdC1icmFuY2ggJiYKIAlvbmU9JChnaXQgcmV2LXBhcnNlIEhFQUR+MykgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSIxIHMgMyAyIiBFWFBFQ1RfSEVBREVSX0NPVU5UPTIgXAotCQlnaXQgcmViYXNlIC1pIEhFQUR+MyAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCUZBS0VfTElORVM9IjEgcyAzIDIiIEVYUEVDVF9IRUFERVJfQ09VTlQ9MiBnaXQgcmViYXNlIC1pIEhFQUR+MworCSkgJiYKIAl0ZXN0ICRvbmUgPSAkKGdpdCByZXYtcGFyc2UgSEVBRH4yKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdpbnRlcnJ1cHRlZCBzcXVhc2ggd29ya3MgYXMgZXhwZWN0ZWQnICcKIAlnaXQgY2hlY2tvdXQgLWIgaW50ZXJydXB0ZWQtc3F1YXNoIGNvbmZsaWN0LWJyYW5jaCAmJgogCW9uZT0kKGdpdCByZXYtcGFyc2UgSEVBRH4zKSAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSIxIHNxdWFzaCAzIDIiIGdpdCByZWJhc2UgLWkgSEVBRH4zICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9IjEgc3F1YXNoIDMgMiIgXAorCQkJZ2l0IHJlYmFzZSAtaSBIRUFEfjMKKwkpICYmCiAJdGVzdF93cml0ZV9saW5lcyBvbmUgdHdvIGZvdXIgPiBjb25mbGljdCAmJgogCWdpdCBhZGQgY29uZmxpY3QgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC0tY29udGludWUgJiYKQEAgLTU2Niw4ICs1OTgsMTEgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2ludGVycnVwdGVkIHNxdWFzaCB3b3JrcyBhcyBleHBlY3RlZCAoY2FzZSAyKScgJwogCWdpdCBjaGVja291dCAtYiBpbnRlcnJ1cHRlZC1zcXVhc2gyIGNvbmZsaWN0LWJyYW5jaCAmJgogCW9uZT0kKGdpdCByZXYtcGFyc2UgSEVBRH4zKSAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSIzIHNxdWFzaCAxIDIiIGdpdCByZWJhc2UgLWkgSEVBRH4zICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9IjMgc3F1YXNoIDEgMiIgXAorCQkJZ2l0IHJlYmFzZSAtaSBIRUFEfjMKKwkpICYmCiAJdGVzdF93cml0ZV9saW5lcyBvbmUgZm91ciA+IGNvbmZsaWN0ICYmCiAJZ2l0IGFkZCBjb25mbGljdCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLS1jb250aW51ZSAmJgpAQCAtNTg3LDExICs2MjIsMTMgQEAKIAlnaXQgY29tbWl0IC1tICJ1bnJlbGF0ZWQgY2hhbmdlIiAmJgogCXBhcmVudD0kKGdpdCByZXYtcGFyc2UgSEVBRF4pICYmCiAJdGVzdF90aWNrICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JRkFLRV9MSU5FUz0iZWRpdCAxIiBnaXQgcmViYXNlIC1pIEhFQUReICYmCi0JZWNobyBlZGl0ZWQgPiBmaWxlNyAmJgotCWdpdCBhZGQgZmlsZTcgJiYKLQlGQUtFX0NPTU1JVF9NRVNTQUdFPSJjaG91ZXR0ZSEiIGdpdCByZWJhc2UgLS1jb250aW51ZSAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCUZBS0VfTElORVM9ImVkaXQgMSIgZ2l0IHJlYmFzZSAtaSBIRUFEXiAmJgorCQllY2hvIGVkaXRlZCA+IGZpbGU3ICYmCisJCWdpdCBhZGQgZmlsZTcgJiYKKwkJRkFLRV9DT01NSVRfTUVTU0FHRT0iY2hvdWV0dGUhIiBnaXQgcmViYXNlIC0tY29udGludWUKKwkpICYmCiAJdGVzdCBlZGl0ZWQgPSAkKGdpdCBzaG93IEhFQUQ6ZmlsZTcpICYmCiAJZ2l0IHNob3cgSEVBRCB8IGdyZXAgY2hvdWV0dGUgJiYKIAl0ZXN0ICRwYXJlbnQgPSAkKGdpdCByZXYtcGFyc2UgSEVBRF4pCkBAIC02MDAsMzQgKzYzNyw0MSBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWJvcnRlZCAtLWNvbnRpbnVlIGRvZXMgbm90IHNxdWFzaCBjb21taXRzIGFmdGVyICJlZGl0IicgJwogCW9sZD0kKGdpdCByZXYtcGFyc2UgSEVBRCkgJiYKIAl0ZXN0X3RpY2sgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSJlZGl0IDEiIGdpdCByZWJhc2UgLWkgSEVBRF4gJiYKLQllY2hvICJlZGl0ZWQgYWdhaW4iID4gZmlsZTcgJiYKLQlnaXQgYWRkIGZpbGU3ICYmCi0JdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfQ09NTUlUX01FU1NBR0U9IiAiIGdpdCByZWJhc2UgLS1jb250aW51ZSAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCUZBS0VfTElORVM9ImVkaXQgMSIgZ2l0IHJlYmFzZSAtaSBIRUFEXiAmJgorCQllY2hvICJlZGl0ZWQgYWdhaW4iID4gZmlsZTcgJiYKKwkJZ2l0IGFkZCBmaWxlNyAmJgorCQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9DT01NSVRfTUVTU0FHRT0iICIgZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCisJKSAmJgogCXRlc3QgJG9sZCA9ICQoZ2l0IHJldi1wYXJzZSBIRUFEKSAmJgogCWdpdCByZWJhc2UgLS1hYm9ydAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhdXRvLWFtZW5kIG9ubHkgZWRpdGVkIGNvbW1pdHMgYWZ0ZXIgImVkaXQiJyAnCiAJdGVzdF90aWNrICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JRkFLRV9MSU5FUz0iZWRpdCAxIiBnaXQgcmViYXNlIC1pIEhFQUReICYmCi0JZWNobyAiZWRpdGVkIGFnYWluIiA+IGZpbGU3ICYmCi0JZ2l0IGFkZCBmaWxlNyAmJgotCUZBS0VfQ09NTUlUX01FU1NBR0U9ImVkaXRlZCBmaWxlNyBhZ2FpbiIgZ2l0IGNvbW1pdCAmJgotCWVjaG8gImFuZCBhZ2FpbiIgPiBmaWxlNyAmJgotCWdpdCBhZGQgZmlsZTcgJiYKLQl0ZXN0X3RpY2sgJiYKLQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9DT01NSVRfTUVTU0FHRT0iYW5kIGFnYWluIiBnaXQgcmViYXNlIC0tY29udGludWUgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSJlZGl0IDEiIGdpdCByZWJhc2UgLWkgSEVBRF4gJiYKKwkJZWNobyAiZWRpdGVkIGFnYWluIiA+IGZpbGU3ICYmCisJCWdpdCBhZGQgZmlsZTcgJiYKKwkJRkFLRV9DT01NSVRfTUVTU0FHRT0iZWRpdGVkIGZpbGU3IGFnYWluIiBnaXQgY29tbWl0ICYmCisJCWVjaG8gImFuZCBhZ2FpbiIgPiBmaWxlNyAmJgorCQlnaXQgYWRkIGZpbGU3ICYmCisJCXRlc3RfdGljayAmJgorCQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9DT01NSVRfTUVTU0FHRT0iYW5kIGFnYWluIiBcCisJCQlnaXQgcmViYXNlIC0tY29udGludWUKKwkpICYmCiAJZ2l0IHJlYmFzZSAtLWFib3J0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NsZWFuIGVycm9yIGFmdGVyIGZhaWxlZCAiZXhlYyInICcKIAl0ZXN0X3RpY2sgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCByZWJhc2UgLS1hYm9ydCB8fCA6IiAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSIxIGV4ZWNfZmFsc2UiIGdpdCByZWJhc2UgLWkgSEVBRF4gJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0iMSBleGVjX2ZhbHNlIiBnaXQgcmViYXNlIC1pIEhFQUReCisJKSAmJgogCWVjaG8gImVkaXRlZCBhZ2FpbiIgPiBmaWxlNyAmJgogCWdpdCBhZGQgZmlsZTcgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC0tY29udGludWUgMj5lcnJvciAmJgpAQCAtNjM4LDggKzY4MiwxMCBAQAogCWdyYW5kcGFyZW50PSQoZ2l0IHJldi1wYXJzZSBIRUFEfjIpICYmCiAJZ2l0IGNoZWNrb3V0ICQoZ2l0IHJldi1wYXJzZSBIRUFEKSAmJgogCXRlc3RfdGljayAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9IjIgMSIgZ2l0IHJlYmFzZSAtaSBIRUFEfjIgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSIyIDEiIGdpdCByZWJhc2UgLWkgSEVBRH4yCisJKSAmJgogCXRlc3QgJGdyYW5kcGFyZW50ID0gJChnaXQgcmV2LXBhcnNlIEhFQUR+MikKICcKIApAQCAtNjU0LDkgKzcwMCwxMCBAQAogCXRlc3RfbXVzdF9mYWlsIGdpdCBjb21taXQgLW0gZG9lc250LXZlcmlmeSBmaWxlMSAmJgogCWdpdCBjb21taXQgLW0gZG9lc250LXZlcmlmeSAtLW5vLXZlcmlmeSBmaWxlMSAmJgogCXRlc3RfdGljayAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9MiBnaXQgcmViYXNlIC1pIEhFQUR+MgotCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0yIGdpdCByZWJhc2UgLWkgSEVBRH4yCisJKQogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2Ugd2l0aCBhIGZpbGUgbmFtZWQgSEVBRCBpbiB3b3JrdHJlZScgJwpAQCAtNjc2LDggKzcyMywxMCBAQAogCQlnaXQgY29tbWl0IC1tICJBZGQgYm9keSIKIAkpICYmCiAKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSIxIHNxdWFzaCAyIiBnaXQgcmViYXNlIC1pIEB7LTF9ICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iMSBzcXVhc2ggMiIgZ2l0IHJlYmFzZSAtaSBAey0xfQorCSkgJiYKIAl0ZXN0ICIkKGdpdCBzaG93IC1zIC0tcHJldHR5PWZvcm1hdDolYW4pIiA9ICJTcXVhc2hlZCBBd2F5IgogCiAnCkBAIC02ODgsNyArNzM3LDYgQEAKIAlHSVRfRURJVE9SPTogZ2l0IGNvbW1pdCAtLWFtZW5kIFwKIAkJLS1hdXRob3I9IlNvbWVib2R5IGVsc2UgPHNvbWVib2R5QGVsc2UuY29tPiIgJiYKIAl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBicmFuY2gzKSAhPSAkKGdpdCByZXYtcGFyc2UgYnJhbmNoNCkgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAlnaXQgcmViYXNlIC1pIGJyYW5jaDMgJiYKIAl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBicmFuY2gzKSA9ICQoZ2l0IHJldi1wYXJzZSBicmFuY2g0KQogCkBAIC03MTMsMTMgKzc2MSwxNCBAQAogCQlnaXQgY29tbWl0IC1hIC1tICJzdWJtb2R1bGUgc2Vjb25kIgogCSkgJiYKIAl0ZXN0X3RpY2sgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAlnaXQgY29tbWl0IC1hIC1tICJUaHJlZSBjaGFuZ2VzIHN1Ym1vZHVsZSIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIHJlYmFzZSAtaScgJwotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9IjEgc3F1YXNoIDIgMyIgZ2l0IHJlYmFzZSAtaSBBCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iMSBzcXVhc2ggMiAzIiBnaXQgcmViYXNlIC1pIEEKKwkpCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb25mbGljdCBzZXR1cCcgJwpAQCAtNzM2LDcgKzc4NSw2IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSBjb250aW51ZSB3aXRoIG9ubHkgc3VibW9kdWxlIHN0YWdlZCcgJwotCXNldF9mYWtlX2VkaXRvciAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgc3VibW9kdWxlLWJhc2UgJiYKIAlnaXQgYWRkIHN1YiAmJgogCWdpdCByZWJhc2UgLS1jb250aW51ZSAmJgpAQCAtNzQ2LDcgKzc5NCw2IEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWkgY29udGludWUgd2l0aCB1bnN0YWdlZCBzdWJtb2R1bGUnICcKIAlnaXQgY2hlY2tvdXQgc3VibW9kdWxlLXRvcGljICYmCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgotCXNldF9mYWtlX2VkaXRvciAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgc3VibW9kdWxlLWJhc2UgJiYKIAlnaXQgcmVzZXQgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKQEAgLTc1OSw3ICs4MDYsNiBAQAogCXRlc3QtdG9vbCBjaG10aW1lID0xMjM0NTY3ODkgZmlsZTMgJiYKIAlnaXQgdXBkYXRlLWluZGV4IC0tcmVmcmVzaCAmJgogCUhFQUQ9JChnaXQgcmV2LXBhcnNlIEhFQUQpICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCiAJZ2l0IHJlYmFzZSAtaSBIRUFEfjQgJiYKIAl0ZXN0ICRIRUFEID0gJChnaXQgcmV2LXBhcnNlIEhFQUQpICYmCiAJTVRJTUU9JCh0ZXN0LXRvb2wgY2htdGltZSAtLWdldCBmaWxlMykgJiYKQEAgLTc2OCwxNiArODE0LDIyIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jld29yZCcgJwogCWdpdCBjaGVja291dCAtYiByZXdvcmQtYnJhbmNoIG1hc3RlciAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9IjEgMiAzIHJld29yZCA0IiBGQUtFX0NPTU1JVF9NRVNTQUdFPSJFIGNoYW5nZWQiIGdpdCByZWJhc2UgLWkgQSAmJgotCWdpdCBzaG93IEhFQUQgfCBncmVwICJFIGNoYW5nZWQiICYmCi0JdGVzdCAkKGdpdCByZXYtcGFyc2UgbWFzdGVyKSAhPSAkKGdpdCByZXYtcGFyc2UgSEVBRCkgJiYKLQl0ZXN0ICQoZ2l0IHJldi1wYXJzZSBtYXN0ZXJeKSA9ICQoZ2l0IHJldi1wYXJzZSBIRUFEXikgJiYKLQlGQUtFX0xJTkVTPSIxIDIgcmV3b3JkIDMgNCIgRkFLRV9DT01NSVRfTUVTU0FHRT0iRCBjaGFuZ2VkIiBnaXQgcmViYXNlIC1pIEEgJiYKLQlnaXQgc2hvdyBIRUFEXiB8IGdyZXAgIkQgY2hhbmdlZCIgJiYKLQlGQUtFX0xJTkVTPSJyZXdvcmQgMSAyIDMgNCIgRkFLRV9DT01NSVRfTUVTU0FHRT0iQiBjaGFuZ2VkIiBnaXQgcmViYXNlIC1pIEEgJiYKLQlnaXQgc2hvdyBIRUFEfjMgfCBncmVwICJCIGNoYW5nZWQiICYmCi0JRkFLRV9MSU5FUz0iMSByIDIgcGljayAzIHAgNCIgRkFLRV9DT01NSVRfTUVTU0FHRT0iQyBjaGFuZ2VkIiBnaXQgcmViYXNlIC1pIEEgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSIxIDIgMyByZXdvcmQgNCIgRkFLRV9DT01NSVRfTUVTU0FHRT0iRSBjaGFuZ2VkIiBcCisJCQlnaXQgcmViYXNlIC1pIEEgJiYKKwkJZ2l0IHNob3cgSEVBRCB8IGdyZXAgIkUgY2hhbmdlZCIgJiYKKwkJdGVzdCAkKGdpdCByZXYtcGFyc2UgbWFzdGVyKSAhPSAkKGdpdCByZXYtcGFyc2UgSEVBRCkgJiYKKwkJdGVzdCAkKGdpdCByZXYtcGFyc2UgbWFzdGVyXikgPSAkKGdpdCByZXYtcGFyc2UgSEVBRF4pICYmCisJCUZBS0VfTElORVM9IjEgMiByZXdvcmQgMyA0IiBGQUtFX0NPTU1JVF9NRVNTQUdFPSJEIGNoYW5nZWQiIFwKKwkJCWdpdCByZWJhc2UgLWkgQSAmJgorCQlnaXQgc2hvdyBIRUFEXiB8IGdyZXAgIkQgY2hhbmdlZCIgJiYKKwkJRkFLRV9MSU5FUz0icmV3b3JkIDEgMiAzIDQiIEZBS0VfQ09NTUlUX01FU1NBR0U9IkIgY2hhbmdlZCIgXAorCQkJZ2l0IHJlYmFzZSAtaSBBICYmCisJCWdpdCBzaG93IEhFQUR+MyB8IGdyZXAgIkIgY2hhbmdlZCIgJiYKKwkJRkFLRV9MSU5FUz0iMSByIDIgcGljayAzIHAgNCIgRkFLRV9DT01NSVRfTUVTU0FHRT0iQyBjaGFuZ2VkIiBcCisJCQlnaXQgcmViYXNlIC1pIEEKKwkpICYmCiAJZ2l0IHNob3cgSEVBRH4yIHwgZ3JlcCAiQyBjaGFuZ2VkIgogJwogCkBAIC03ODgsNyArODQwLDYgQEAKIAl0ZXN0X2NvbW1pdCBuMiAmJgogCXRlc3RfY29tbWl0IG4zICYmCiAJZ2l0IG5vdGVzIGFkZCAtbSJhIG5vdGUiIG4zICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCiAJZ2l0IHJlYmFzZSAtaSAtLW9udG8gbjEgbjIgJiYKIAl0ZXN0ICJhIG5vdGUiID0gIiQoZ2l0IG5vdGVzIHNob3cgSEVBRCkiCiAnCkBAIC04MDEsOCArODUyLDExIEBACiAJRU9GCiAJZ2l0IHJlc2V0IC0taGFyZCBuMyAmJgogCWdpdCBub3RlcyBhZGQgLW0iYW4gZWFybGllciBub3RlIiBuMiAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUdJVF9OT1RFU19SRVdSSVRFX01PREU9Y29uY2F0ZW5hdGUgRkFLRV9MSU5FUz0iMSBmIDIiIGdpdCByZWJhc2UgLWkgbjEgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlHSVRfTk9URVNfUkVXUklURV9NT0RFPWNvbmNhdGVuYXRlIEZBS0VfTElORVM9IjEgZiAyIiBcCisJCQlnaXQgcmViYXNlIC1pIG4xCisJKSAmJgogCWdpdCBub3RlcyBzaG93ID4gb3V0cHV0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IG91dHB1dAogJwpAQCAtODExLDggKzg2NSwxMCBAQAogCWdpdCBzeW1ib2xpYy1yZWYgSEVBRCAmJgogCWdyYW5kcGFyZW50PSQoZ2l0IHJldi1wYXJzZSBIRUFEfjIpICYmCiAJdGVzdF90aWNrICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JRkFLRV9MSU5FUz0iMiAxIiBnaXQgcmViYXNlIC1pIEhFQUR+MiBIRUFEXjAgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSIyIDEiIGdpdCByZWJhc2UgLWkgSEVBRH4yIEhFQUReMAorCSkgJiYKIAl0ZXN0ICRncmFuZHBhcmVudCA9ICQoZ2l0IHJldi1wYXJzZSBIRUFEfjIpICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IHN5bWJvbGljLXJlZiBIRUFECiAnCkBAIC04MjEsNyArODc3LDYgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Fsd2F5cyBjaGVycnktcGljayB3aXRoIC0tbm8tZmYnICcKIAlnaXQgY2hlY2tvdXQgbm8tZmYtYnJhbmNoICYmCiAJZ2l0IHRhZyBvcmlnaW5hbC1uby1mZi1icmFuY2ggJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAlnaXQgcmViYXNlIC1pIC0tbm8tZmYgQSAmJgogCWZvciBwIGluIDAgMSAyCiAJZG8KQEAgLTg1Myw4ICs5MDgsMTAgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZS1pIGhpc3Rvcnkgd2l0aCBmdW5ueSBtZXNzYWdlcycgJwogCWdpdCByZXYtbGlzdCBBLi5mdW5ueSA+ZXhwZWN0ICYmCiAJdGVzdF90aWNrICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JRkFLRV9MSU5FUz0iMSAyIDMgNCIgZ2l0IHJlYmFzZSAtaSBBICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iMSAyIDMgNCIgZ2l0IHJlYmFzZSAtaSBBCisJKSAmJgogCWdpdCByZXYtbGlzdCBBLi4gPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKQEAgLTg2OCw5ICs5MjUsOSBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdydW5uaW5nICJnaXQgcmViYXNlIC1pIC0tZXhlYyBnaXQgc2hvdyBIRUFEIicgJwotCXNldF9mYWtlX2VkaXRvciAmJgotCWdpdCByZWJhc2UgLWkgLS1leGVjICJnaXQgc2hvdyBIRUFEIiBIRUFEfjIgPmFjdHVhbCAmJgogCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCWdpdCByZWJhc2UgLWkgLS1leGVjICJnaXQgc2hvdyBIRUFEIiBIRUFEfjIgPmFjdHVhbCAmJgogCQlGQUtFX0xJTkVTPSIxIGV4ZWNfZ2l0X3Nob3dfSEVBRCAyIGV4ZWNfZ2l0X3Nob3dfSEVBRCIgJiYKIAkJZXhwb3J0IEZBS0VfTElORVMgJiYKIAkJZ2l0IHJlYmFzZSAtaSBIRUFEfjIgPmV4cGVjdApAQCAtODgxLDkgKzkzOCw5IEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3J1bm5pbmcgImdpdCByZWJhc2UgLS1leGVjIGdpdCBzaG93IEhFQUQgLWkiJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCBleGVjdXRlICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JZ2l0IHJlYmFzZSAtLWV4ZWMgImdpdCBzaG93IEhFQUQiIC1pIEhFQUR+MiA+YWN0dWFsICYmCiAJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJZ2l0IHJlYmFzZSAtLWV4ZWMgImdpdCBzaG93IEhFQUQiIC1pIEhFQUR+MiA+YWN0dWFsICYmCiAJCUZBS0VfTElORVM9IjEgZXhlY19naXRfc2hvd19IRUFEIDIgZXhlY19naXRfc2hvd19IRUFEIiAmJgogCQlleHBvcnQgRkFLRV9MSU5FUyAmJgogCQlnaXQgcmViYXNlIC1pIEhFQUR+MiA+ZXhwZWN0CkBAIC04OTQsOSArOTUxLDkgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncnVubmluZyAiZ2l0IHJlYmFzZSAtaXggZ2l0IHNob3cgSEVBRCInICcKIAlnaXQgcmVzZXQgLS1oYXJkIGV4ZWN1dGUgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlnaXQgcmViYXNlIC1peCAiZ2l0IHNob3cgSEVBRCIgSEVBRH4yID5hY3R1YWwgJiYKIAkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlnaXQgcmViYXNlIC1peCAiZ2l0IHNob3cgSEVBRCIgSEVBRH4yID5hY3R1YWwgJiYKIAkJRkFLRV9MSU5FUz0iMSBleGVjX2dpdF9zaG93X0hFQUQgMiBleGVjX2dpdF9zaG93X0hFQUQiICYmCiAJCWV4cG9ydCBGQUtFX0xJTkVTICYmCiAJCWdpdCByZWJhc2UgLWkgSEVBRH4yID5leHBlY3QKQEAgLTkwOCw5ICs5NjUsOSBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWl4IHdpdGggc2V2ZXJhbCA8Q01EPicgJwogCWdpdCByZXNldCAtLWhhcmQgZXhlY3V0ZSAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCWdpdCByZWJhc2UgLWl4ICJnaXQgc2hvdyBIRUFEOyBwd2QiIEhFQUR+MiA+YWN0dWFsICYmCiAJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJZ2l0IHJlYmFzZSAtaXggImdpdCBzaG93IEhFQUQ7IHB3ZCIgSEVBRH4yID5hY3R1YWwgJiYKIAkJRkFLRV9MSU5FUz0iMSBleGVjX2dpdF9zaG93X0hFQUQ7X3B3ZCAyIGV4ZWNfZ2l0X3Nob3dfSEVBRDtfcHdkIiAmJgogCQlleHBvcnQgRkFLRV9MSU5FUyAmJgogCQlnaXQgcmViYXNlIC1pIEhFQUR+MiA+ZXhwZWN0CkBAIC05MjEsOSArOTc4LDkgQEAKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1peCB3aXRoIHNldmVyYWwgaW5zdGFuY2VzIG9mIC0tZXhlYycgJwogCWdpdCByZXNldCAtLWhhcmQgZXhlY3V0ZSAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCWdpdCByZWJhc2UgLWkgLS1leGVjICJnaXQgc2hvdyBIRUFEIiAtLWV4ZWMgInB3ZCIgSEVBRH4yID5hY3R1YWwgJiYKIAkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlnaXQgcmViYXNlIC1pIC0tZXhlYyAiZ2l0IHNob3cgSEVBRCIgLS1leGVjICJwd2QiIEhFQUR+MiA+YWN0dWFsICYmCiAJCUZBS0VfTElORVM9IjEgZXhlY19naXRfc2hvd19IRUFEIGV4ZWNfcHdkIDIKIAkJCQlleGVjX2dpdF9zaG93X0hFQUQgZXhlY19wd2QiICYmCiAJCWV4cG9ydCBGQUtFX0xJTkVTICYmCkBAIC05NDIsMTMgKzk5OSwxMSBAQAogCWVjaG8gYmlzID5iaXMudHh0ICYmCiAJZ2l0IGFkZCBiaXMudHh0ICYmCiAJZ2l0IGNvbW1pdCAtbSAiZml4dXAhIHR3b19leGVjIiAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCSgKLQkJZ2l0IGNoZWNrb3V0IC1iIGF1dG9zcXVhc2hfYWN0dWFsICYmCi0JCWdpdCByZWJhc2UgLWkgLS1leGVjICJnaXQgc2hvdyBIRUFEIiAtLWF1dG9zcXVhc2ggSEVBRH40ID5hY3R1YWwKLQkpICYmCisJZ2l0IGNoZWNrb3V0IC1iIGF1dG9zcXVhc2hfYWN0dWFsICYmCisJZ2l0IHJlYmFzZSAtaSAtLWV4ZWMgImdpdCBzaG93IEhFQUQiIC0tYXV0b3NxdWFzaCBIRUFEfjQgPmFjdHVhbCAmJgogCWdpdCBjaGVja291dCBhdXRvc3F1YXNoICYmCiAJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKIAkJZ2l0IGNoZWNrb3V0IC1iIGF1dG9zcXVhc2hfZXhwZWN0ZWQgJiYKIAkJRkFLRV9MSU5FUz0iMSBmaXh1cCAzIGZpeHVwIDQgZXhlY19naXRfc2hvd19IRUFEIDIgZXhlY19naXRfc2hvd19IRUFEIiAmJgogCQlleHBvcnQgRkFLRV9MSU5FUyAmJgpAQCAtOTY5LDcgKzEwMjQsNiBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWkgLS1leGVjIHdpdGhvdXQgPENNRD4nICcKIAlnaXQgcmVzZXQgLS1oYXJkIGV4ZWN1dGUgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1pIC0tZXhlYyAyPmFjdHVhbCAmJgogCXRlc3RfaTE4bmdyZXAgInJlcXVpcmVzIGEgdmFsdWUiIGFjdHVhbCAmJgogCWdpdCBjaGVja291dCBtYXN0ZXIKQEAgLTk3Nyw4ICsxMDMxLDEwIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSAtLXJvb3QgcmUtb3JkZXIgYW5kIGRyb3AgY29tbWl0cycgJwogCWdpdCBjaGVja291dCBFICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JRkFLRV9MSU5FUz0iMyAxIDIgNSIgZ2l0IHJlYmFzZSAtaSAtLXJvb3QgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSIzIDEgMiA1IiBnaXQgcmViYXNlIC1pIC0tcm9vdAorCSkgJiYKIAl0ZXN0IEUgPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgXCRwKSAmJgogCXRlc3QgQiA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEXiB8IHNlZCAtbmUgXCRwKSAmJgogCXRlc3QgQSA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEXl4gfCBzZWQgLW5lIFwkcCkgJiYKQEAgLTk5MSwyNCArMTA0NywzMCBAQAogCWVjaG8gQiA+ZmlsZTcgJiYKIAlnaXQgYWRkIGZpbGU3ICYmCiAJR0lUX0FVVEhPUl9OQU1FPSJUd2VycCBTbm9nIiBnaXQgY29tbWl0IC1tICJkaWZmZXJlbnQgYXV0aG9yIiAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9IjIiIGdpdCByZWJhc2UgLWkgLS1yb290ICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iMiIgZ2l0IHJlYmFzZSAtaSAtLXJvb3QKKwkpICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgZ3JlcCAtcSAiXmF1dGhvciBUd2VycCBTbm9nIiAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IGdyZXAgLXEgIl5kaWZmZXJlbnQgYXV0aG9yJCIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1pIC0tcm9vdCB0ZW1wb3Jhcnkgc2VudGluZWwgY29tbWl0JyAnCiAJZ2l0IGNoZWNrb3V0IEIgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0iMiIgZ2l0IHJlYmFzZSAtaSAtLXJvb3QgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0iMiIgZ2l0IHJlYmFzZSAtaSAtLXJvb3QKKwkpICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgZ3JlcCAiXnRyZWUgJEVNUFRZX1RSRUUiICYmCiAJZ2l0IHJlYmFzZSAtLWFib3J0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSAtLXJvb3QgZml4dXAgcm9vdCBjb21taXQnICcKIAlnaXQgY2hlY2tvdXQgQiAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9IjEgZml4dXAgMiIgZ2l0IHJlYmFzZSAtaSAtLXJvb3QgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSIxIGZpeHVwIDIiIGdpdCByZWJhc2UgLWkgLS1yb290CisJKSAmJgogCXRlc3QgQSA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgc2VkIC1uZSBcJHApICYmCiAJdGVzdCBCID0gJChnaXQgc2hvdyBIRUFEOmZpbGUxKSAmJgogCXRlc3QgMCA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgZ3JlcCAtYyBecGFyZW50XCApCkBAIC0xMDE3LDkgKzEwNzksMTEgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSAtLXJvb3QgcmV3b3JkIG9yaWdpbmFsIHJvb3QgY29tbWl0JyAnCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJ0ZXN0X21pZ2h0X2ZhaWwgZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgogCWdpdCBjaGVja291dCAtYiByZXdvcmQtb3JpZ2luYWwtcm9vdC1icmFuY2ggbWFzdGVyICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JRkFLRV9MSU5FUz0icmV3b3JkIDEgMiIgRkFLRV9DT01NSVRfTUVTU0FHRT0iQSBjaGFuZ2VkIiBcCi0JZ2l0IHJlYmFzZSAtaSAtLXJvb3QgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSJyZXdvcmQgMSAyIiBGQUtFX0NPTU1JVF9NRVNTQUdFPSJBIGNoYW5nZWQiIFwKKwkJCWdpdCByZWJhc2UgLWkgLS1yb290CisJKSAmJgogCWdpdCBzaG93IEhFQUReIHwgZ3JlcCAiQSBjaGFuZ2VkIiAmJgogCXRlc3QgLXogIiQoZ2l0IHNob3cgLXMgLS1mb3JtYXQ9JXAgSEVBRF4pIgogJwpAQCAtMTAyNyw5ICsxMDkxLDExIEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWkgLS1yb290IHJld29yZCBuZXcgcm9vdCBjb21taXQnICcKIAl0ZXN0X3doZW5fZmluaXNoZWQgInRlc3RfbWlnaHRfZmFpbCBnaXQgcmViYXNlIC0tYWJvcnQiICYmCiAJZ2l0IGNoZWNrb3V0IC1iIHJld29yZC1ub3ctcm9vdC1icmFuY2ggbWFzdGVyICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JRkFLRV9MSU5FUz0icmV3b3JkIDMgMSIgRkFLRV9DT01NSVRfTUVTU0FHRT0iQyBjaGFuZ2VkIiBcCi0JZ2l0IHJlYmFzZSAtaSAtLXJvb3QgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSJyZXdvcmQgMyAxIiBGQUtFX0NPTU1JVF9NRVNTQUdFPSJDIGNoYW5nZWQiIFwKKwkJZ2l0IHJlYmFzZSAtaSAtLXJvb3QKKwkpICYmCiAJZ2l0IHNob3cgSEVBRF4gfCBncmVwICJDIGNoYW5nZWQiICYmCiAJdGVzdCAteiAiJChnaXQgc2hvdyAtcyAtLWZvcm1hdD0lcCBIRUFEXikiCiAnCkBAIC0xMDQxLDggKzExMDcsMTAgQEAKIAlnaXQgcm0gZmlsZTEgJiYKIAlnaXQgY29tbWl0IC1tICJyZW1vdmUgZmlsZSAxIGFkZCBmaWxlIDIiICYmCiAJZWNobyB6ID5maWxlMSAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSIxIDIiIGdpdCByZWJhc2UgLWkgLS1yb290ICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9IjEgMiIgZ2l0IHJlYmFzZSAtaSAtLXJvb3QKKwkpICYmCiAJcm0gZmlsZTEgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKIAl0ZXN0ICIkKGdpdCBsb2cgLTEgLS1mb3JtYXQ9JUIpIiA9ICJyZW1vdmUgZmlsZSAxIGFkZCBmaWxlIDIiICYmCkBAIC0xMDUyLDExICsxMTIwLDEzIEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWkgLS1yb290IHJld29yZCByb290IHdoZW4gcm9vdCBoYXMgdW50cmFja2VkIGZpbGUgY29uZmxpY3QnICcKIAl0ZXN0X3doZW5fZmluaXNoZWQgInJlc2V0X3JlYmFzZSIgJiYKIAllY2hvIHo+ZmlsZTEgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0icmV3b3JkIDEgMiIgXAotCQlGQUtFX0NPTU1JVF9NRVNTQUdFPSJNb2RpZmllZCBBIiBnaXQgcmViYXNlIC1pIC0tcm9vdCAmJgotCXJtIGZpbGUxICYmCi0JRkFLRV9DT01NSVRfTUVTU0FHRT0iUmV3b3JkZWQgQSIgZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9InJld29yZCAxIDIiIFwKKwkJCUZBS0VfQ09NTUlUX01FU1NBR0U9Ik1vZGlmaWVkIEEiIGdpdCByZWJhc2UgLWkgLS1yb290ICYmCisJCXJtIGZpbGUxICYmCisJCUZBS0VfQ09NTUlUX01FU1NBR0U9IlJld29yZGVkIEEiIGdpdCByZWJhc2UgLS1jb250aW51ZQorCSkgJiYKIAl0ZXN0ICIkKGdpdCBsb2cgLTEgLS1mb3JtYXQ9JUIgSEVBRF4pIiA9ICJSZXdvcmRlZCBBIiAmJgogCXRlc3QgIiQoZ2l0IHJldi1saXN0IC0tY291bnQgSEVBRCkiID0gMgogJwpAQCAtMTA2NSwxOSArMTEzNSwyMyBAQAogCWdpdCBjaGVja291dCByZXdvcmQtb3JpZ2luYWwtcm9vdC1icmFuY2ggJiYKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGNoZWNrb3V0IGNvbmZsaWN0LWJyYW5jaCAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWYgLS1vbnRvIEhFQUR+MiBIRUFEfiAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLS1lZGl0LXRvZG8gJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1mIC0tb250byBIRUFEfjIgSEVBRH4gJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtLWVkaXQtdG9kbworCSkgJiYKIAlnaXQgcmViYXNlIC0tYWJvcnQKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC0tZWRpdC10b2RvIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0b2RvJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWdpdCBjaGVja291dCBuby1jb25mbGljdC1icmFuY2heMCAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9ImVkaXQgMSAyIDMiIGdpdCByZWJhc2UgLWkgSEVBRH4zICYmCi0JRkFLRV9MSU5FUz0iMiAxIiBnaXQgcmViYXNlIC0tZWRpdC10b2RvICYmCi0JZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iZWRpdCAxIDIgMyIgZ2l0IHJlYmFzZSAtaSBIRUFEfjMgJiYKKwkJRkFLRV9MSU5FUz0iMiAxIiBnaXQgcmViYXNlIC0tZWRpdC10b2RvICYmCisJCWdpdCByZWJhc2UgLS1jb250aW51ZQorCSkgJiYKIAl0ZXN0IE0gPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRF4gfCBzZWQgLW5lIFwkcCkgJiYKIAl0ZXN0IEwgPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgXCRwKQogJwpAQCAtMTA4NSw3ICsxMTU5LDYgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtaSBwcm9kdWNlcyByZWFkYWJsZSByZWZsb2cnICcKIAlnaXQgcmVzZXQgLS1oYXJkICYmCiAJZ2l0IGJyYW5jaCAtZiBicmFuY2gtcmVmbG9nLXRlc3QgSCAmJgotCXNldF9mYWtlX2VkaXRvciAmJgogCWdpdCByZWJhc2UgLWkgLS1vbnRvIEkgRiBicmFuY2gtcmVmbG9nLXRlc3QgJiYKIAljYXQgPmV4cGVjdCA8PC1cRU9GICYmCiAJcmViYXNlIC1pIChmaW5pc2gpOiByZXR1cm5pbmcgdG8gcmVmcy9oZWFkcy9icmFuY2gtcmVmbG9nLXRlc3QKQEAgLTExMDYsOCArMTE3OSwxMCBAQAogCXNlZCAtZSAiMixcJHMvXi9cXFxcLyIgIiQxIiA+IiQxLnRtcCIgJiYKIAltdiAiJDEudG1wIiAiJDEiCiAJRU9GCi0JdGVzdF9zZXRfZWRpdG9yICIkKHB3ZCkvcmVtb3ZlLWFsbC1idXQtZmlyc3Quc2giICYmCi0JZ2l0IHJlYmFzZSAtaSBCICYmCisJKAorCQl0ZXN0X3NldF9lZGl0b3IgIiQocHdkKS9yZW1vdmUtYWxsLWJ1dC1maXJzdC5zaCIgJiYKKwkJZ2l0IHJlYmFzZSAtaSBCCisJKSAmJgogCXRlc3QgQiA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEXiB8IHNlZCAtbmUgXCRwKQogJwogCkBAIC0xMTE2LDkgKzExOTEsMTEgQEAKIAl3cml0ZV9zY3JpcHQgY29weS1lZGl0LXNjcmlwdC5zaCA8PC1cRU9GICYmCiAJY3AgIiQxIiBlZGl0LXNjcmlwdAogCUVPRgotCXRlc3Rfc2V0X2VkaXRvciAiJChwd2QpL2NvcHktZWRpdC1zY3JpcHQuc2giICYmCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgcmViYXNlIC0tYWJvcnQgfHwgOiIgJiYKLQlnaXQgcmViYXNlIC1pIEhFQUReICYmCisJKAorCQl0ZXN0X3NldF9lZGl0b3IgIiQocHdkKS9jb3B5LWVkaXQtc2NyaXB0LnNoIiAmJgorCQlnaXQgcmViYXNlIC1pIEhFQUReCisJKSAmJgogCXRlc3QgLXogIiQoZ3JlcCAtdmUgIl4jIiAtZSAiXlwkIiAtZSAiXnBpY2siIGVkaXQtc2NyaXB0KSIKICcKIApAQCAtMTE1Myw4ICsxMjMwLDExIEBACiAJZWNobyBmaXZlID5jb25mbGljdCAmJgogCWVjaG8gWiA+ZmlsZTEgJiYKIAlnaXQgY29tbWl0IC1hIC1tICJvbmUgZmlsZSBjb25mbGljdCIgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSJlZGl0IDEgMiIgZ2l0IHJlYmFzZSAtaSAtLXN0cmF0ZWd5PXJlY3Vyc2l2ZSAtWG91cnMgY29uZmxpY3QtYnJhbmNoICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iZWRpdCAxIDIiIGdpdCByZWJhc2UgLWkgLS1zdHJhdGVneT1yZWN1cnNpdmUgXAorCQkJLVhvdXJzIGNvbmZsaWN0LWJyYW5jaAorCSkgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKIAl0ZXN0ICQoZ2l0IHNob3cgY29uZmxpY3QtYnJhbmNoOmNvbmZsaWN0KSA9ICQoY2F0IGNvbmZsaWN0KSAmJgogCXRlc3QgJChjYXQgZmlsZTEpID0gWgpAQCAtMTE5NSw4ICsxMjc1LDEwIEBACiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Jlc3BlY3QgY29yZS5hYmJyZXYnICcKIAlnaXQgY29uZmlnIGNvcmUuYWJicmV2IDEyICYmCi0Jc2V0X2NhdF90b2RvX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgSEVBRH40ID50b2RvLWxpc3QgJiYKKwkoCisJCXNldF9jYXRfdG9kb19lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJlYmFzZSAtaSBIRUFEfjQgPnRvZG8tbGlzdAorCSkgJiYKIAl0ZXN0IDQgPSAkKGdyZXAgLWMgInBpY2sgWzAtOWEtZl1cezEyLFx9IiB0b2RvLWxpc3QpCiAnCiAKQEAgLTEyMDQsMTYgKzEyODYsMjAgQEAKIAl3cml0ZV9zY3JpcHQgZHVtcC1yYXcuc2ggPDwtXEVPRiAmJgogCQljYXQgIiQxIgogCUVPRgotCXRlc3Rfc2V0X2VkaXRvciAiJChwd2QpL2R1bXAtcmF3LnNoIiAmJgotCWdpdCByZWJhc2UgLWkgSEVBRH40ID5hY3R1YWwgJiYKKwkoCisJCXRlc3Rfc2V0X2VkaXRvciAiJChwd2QpL2R1bXAtcmF3LnNoIiAmJgorCQlnaXQgcmViYXNlIC1pIEhFQUR+NCA+YWN0dWFsCisJKSAmJgogCXRlc3RfaTE4bmdyZXAgIl4jIFJlYmFzZSAuLiogb250byAuLiogKFswLTldIiBhY3R1YWwKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1pIGNvbW1pdHMgdGhhdCBvdmVyd3JpdGUgdW50cmFja2VkIGZpbGVzIChwaWNrKScgJwogCWdpdCBjaGVja291dCAtLWZvcmNlIGJyYW5jaDIgJiYKIAlnaXQgY2xlYW4gLWYgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSJlZGl0IDEgMiIgZ2l0IHJlYmFzZSAtaSBBICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iZWRpdCAxIDIiIGdpdCByZWJhc2UgLWkgQQorCSkgJiYKIAl0ZXN0X2NtcF9yZXYgSEVBRCBGICYmCiAJdGVzdF9wYXRoX2lzX21pc3NpbmcgZmlsZTYgJiYKIAk+ZmlsZTYgJiYKQEAgLTEyMjgsOCArMTMxNCwxMCBAQAogCWdpdCBjaGVja291dCAtLWZvcmNlIGJyYW5jaDIgJiYKIAlnaXQgY2xlYW4gLWYgJiYKIAlnaXQgdGFnIG9yaWdpbmFsLWJyYW5jaDIgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSJlZGl0IDEgc3F1YXNoIDIiIGdpdCByZWJhc2UgLWkgQSAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCUZBS0VfTElORVM9ImVkaXQgMSBzcXVhc2ggMiIgZ2l0IHJlYmFzZSAtaSBBCisJKSAmJgogCXRlc3RfY21wX3JldiBIRUFEIEYgJiYKIAl0ZXN0X3BhdGhfaXNfbWlzc2luZyBmaWxlNiAmJgogCT5maWxlNiAmJgpAQCAtMTI0NCw4ICsxMzMyLDEwIEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWkgY29tbWl0cyB0aGF0IG92ZXJ3cml0ZSB1bnRyYWNrZWQgZmlsZXMgKG5vIGZmKScgJwogCWdpdCBjaGVja291dCAtLWZvcmNlIGJyYW5jaDIgJiYKIAlnaXQgY2xlYW4gLWYgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSJlZGl0IDEgMiIgZ2l0IHJlYmFzZSAtaSAtLW5vLWZmIEEgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSJlZGl0IDEgMiIgZ2l0IHJlYmFzZSAtaSAtLW5vLWZmIEEKKwkpICYmCiAJdGVzdCAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgXCRwKSA9IEYgJiYKIAl0ZXN0X3BhdGhfaXNfbWlzc2luZyBmaWxlNiAmJgogCT5maWxlNiAmJgpAQCAtMTI2OCw4ICsxMzU4LDEwIEBACiAJZ2l0IHRhZyBzZXEtb250byAmJgogCWdpdCByZXNldCAtLWhhcmQgSEVBRH4yICYmCiAJZ2l0IGNoZXJyeS1waWNrIHNlcS1vbnRvICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9IGdpdCByZWJhc2UgLWkgc2VxLW9udG8gJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0gZ2l0IHJlYmFzZSAtaSBzZXEtb250bworCSkgJiYKIAl0ZXN0IC1kIC5naXQvcmViYXNlLW1lcmdlICYmCiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCiAJZ2l0IGRpZmYgLS1leGl0LWNvZGUgc2VxLW9udG8gJiYKQEAgLTEyODgsOCArMTM4MCwxMCBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkcm9wJyAnCiAJcmViYXNlX3NldHVwX2FuZF9jbGVhbiBkcm9wLXRlc3QgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSIxIGRyb3AgMiAzIGQgNCA1IiBnaXQgcmViYXNlIC1pIC0tcm9vdCAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCUZBS0VfTElORVM9IjEgZHJvcCAyIDMgZCA0IDUiIGdpdCByZWJhc2UgLWkgLS1yb290CisJKSAmJgogCXRlc3QgRSA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgc2VkIC1uZSBcJHApICYmCiAJdGVzdCBDID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUReIHwgc2VkIC1uZSBcJHApICYmCiAJdGVzdCBBID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUReXiB8IHNlZCAtbmUgXCRwKQpAQCAtMTI5OCw5ICsxMzkyLDEwIEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWkgcmVzcGVjdHMgcmViYXNlLm1pc3NpbmdDb21taXRzQ2hlY2sgPSBpZ25vcmUnICcKIAl0ZXN0X2NvbmZpZyByZWJhc2UubWlzc2luZ0NvbW1pdHNDaGVjayBpZ25vcmUgJiYKIAlyZWJhc2Vfc2V0dXBfYW5kX2NsZWFuIG1pc3NpbmctY29tbWl0ICYmCi0Jc2V0X2Zha2VfZWRpdG9yICYmCi0JRkFLRV9MSU5FUz0iMSAyIDMgNCIgXAotCQlnaXQgcmViYXNlIC1pIC0tcm9vdCAyPmFjdHVhbCAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCUZBS0VfTElORVM9IjEgMiAzIDQiIGdpdCByZWJhc2UgLWkgLS1yb290IDI+YWN0dWFsCisJKSAmJgogCXRlc3QgRCA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgc2VkIC1uZSBcJHApICYmCiAJdGVzdF9pMThuZ3JlcCBcCiAJCSJTdWNjZXNzZnVsbHkgcmViYXNlZCBhbmQgdXBkYXRlZCByZWZzL2hlYWRzL21pc3NpbmctY29tbWl0IiBcCkBAIC0xMzE2LDkgKzE0MTEsMTAgQEAKIAlFT0YKIAl0ZXN0X2NvbmZpZyByZWJhc2UubWlzc2luZ0NvbW1pdHNDaGVjayB3YXJuICYmCiAJcmViYXNlX3NldHVwX2FuZF9jbGVhbiBtaXNzaW5nLWNvbW1pdCAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCUZBS0VfTElORVM9IjEgMiAzIDQiIFwKLQkJZ2l0IHJlYmFzZSAtaSAtLXJvb3QgMj5hY3R1YWwuMiAmJgorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCUZBS0VfTElORVM9IjEgMiAzIDQiIGdpdCByZWJhc2UgLWkgLS1yb290IDI+YWN0dWFsLjIKKwkpICYmCiAJaGVhZCAtbjQgYWN0dWFsLjIgPmFjdHVhbCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsICYmCiAJdGVzdCBEID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBzZWQgLW5lIFwkcCkKQEAgLTEzNDAsMTQgKzE0MzYsMTUgQEAKIAlFT0YKIAl0ZXN0X2NvbmZpZyByZWJhc2UubWlzc2luZ0NvbW1pdHNDaGVjayBlcnJvciAmJgogCXJlYmFzZV9zZXR1cF9hbmRfY2xlYW4gbWlzc2luZy1jb21taXQgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0iMSAyIDQiIFwKLQkJZ2l0IHJlYmFzZSAtaSAtLXJvb3QgMj5hY3R1YWwgJiYKLQl0ZXN0X2kxOG5jbXAgZXhwZWN0IGFjdHVhbCAmJgotCWNwIC5naXQvcmViYXNlLW1lcmdlL2dpdC1yZWJhc2UtdG9kby5iYWNrdXAgXAotCQkuZ2l0L3JlYmFzZS1tZXJnZS9naXQtcmViYXNlLXRvZG8gJiYKLQlGQUtFX0xJTkVTPSIxIDIgZHJvcCAzIDQgZHJvcCA1IiBcCi0JCWdpdCByZWJhc2UgLS1lZGl0LXRvZG8gJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0iMSAyIDQiIFwKKwkJCWdpdCByZWJhc2UgLWkgLS1yb290IDI+YWN0dWFsICYmCisJCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsICYmCisJCWNwIC5naXQvcmViYXNlLW1lcmdlL2dpdC1yZWJhc2UtdG9kby5iYWNrdXAgXAorCQkJLmdpdC9yZWJhc2UtbWVyZ2UvZ2l0LXJlYmFzZS10b2RvICYmCisJCUZBS0VfTElORVM9IjEgMiBkcm9wIDMgNCBkcm9wIDUiIGdpdCByZWJhc2UgLS1lZGl0LXRvZG8KKwkpICYmCiAJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCiAJdGVzdCBEID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBzZWQgLW5lIFwkcCkgJiYKIAl0ZXN0IEIgPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRF4gfCBzZWQgLW5lIFwkcCkKQEAgLTEzNjgsMjEgKzE0NjUsMjcgQEAKIAl4IGdpdCBzaG93IEhFQUQKIAlFT0YKIAlnaXQgY2hlY2tvdXQgYWJicmV2Y21kICYmCi0Jc2V0X2NhdF90b2RvX2VkaXRvciAmJgogCXRlc3RfY29uZmlnIHJlYmFzZS5hYmJyZXZpYXRlQ29tbWFuZHMgdHJ1ZSAmJgotCXRlc3RfbXVzdF9mYWlsIGdpdCByZWJhc2UgLWkgLS1leGVjICJnaXQgc2hvdyBIRUFEIiBcCi0JCS0tYXV0b3NxdWFzaCBtYXN0ZXIgPmFjdHVhbCAmJgorCSgKKwkJc2V0X2NhdF90b2RvX2VkaXRvciAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1pIC0tZXhlYyAiZ2l0IHNob3cgSEVBRCIgXAorCQkJLS1hdXRvc3F1YXNoIG1hc3RlciA+YWN0dWFsCisJKSAmJgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGF0aWMgY2hlY2sgb2YgYmFkIGNvbW1hbmQnICcKIAlyZWJhc2Vfc2V0dXBfYW5kX2NsZWFuIGJhZC1jbWQgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQl0ZXN0X211c3RfZmFpbCBlbnYgRkFLRV9MSU5FUz0iMSAyIDMgYmFkIDQgNSIgXAorCSgKKwkJc2V0X2Zha2VfZWRpdG9yICYmCisJCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSIxIDIgMyBiYWQgNCA1IiBcCiAJCWdpdCByZWJhc2UgLWkgLS1yb290IDI+YWN0dWFsICYmCi0JdGVzdF9pMThuZ3JlcCAiYmFkY21kICQoZ2l0IHJldi1saXN0IC0tb25lbGluZSAtMSBtYXN0ZXJ+MSkiIGFjdHVhbCAmJgotCXRlc3RfaTE4bmdyZXAgIllvdSBjYW4gZml4IHRoaXMgd2l0aCAuZ2l0IHJlYmFzZSAtLWVkaXQtdG9kby4uIiBhY3R1YWwgJiYKLQlGQUtFX0xJTkVTPSIxIDIgMyBkcm9wIDQgNSIgZ2l0IHJlYmFzZSAtLWVkaXQtdG9kbyAmJgorCQl0ZXN0X2kxOG5ncmVwICJiYWRjbWQgJChnaXQgcmV2LWxpc3QgLS1vbmVsaW5lIC0xIG1hc3Rlcn4xKSIgXAorCQkJCWFjdHVhbCAmJgorCQl0ZXN0X2kxOG5ncmVwICJZb3UgY2FuIGZpeCB0aGlzIHdpdGggLmdpdCByZWJhc2UgLS1lZGl0LXRvZG8uLiIgXAorCQkJCWFjdHVhbCAmJgorCQlGQUtFX0xJTkVTPSIxIDIgMyBkcm9wIDQgNSIgZ2l0IHJlYmFzZSAtLWVkaXQtdG9kbworCSkgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKIAl0ZXN0IEUgPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgXCRwKSAmJgogCXRlc3QgQyA9ICQoZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEXiB8IHNlZCAtbmUgXCRwKQpAQCAtMTM5OCwxOSArMTUwMSwyNCBAQAogCSkgPiIkMS5uZXciCiAJbXYgIiQxLm5ldyIgIiQxIgogCUVPRgotCXRlc3Rfc2V0X2VkaXRvciAiJChwd2QpL2FkZC1pbmRlbnQuc2giICYmCi0JZ2l0IHJlYmFzZSAtaSBIRUFEXl5eICYmCisJKAorCQl0ZXN0X3NldF9lZGl0b3IgIiQocHdkKS9hZGQtaW5kZW50LnNoIiAmJgorCQlnaXQgcmViYXNlIC1pIEhFQUReXl4KKwkpICYmCiAJdGVzdCBFID0gJChnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUQgfCBzZWQgLW5lIFwkcCkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3RhdGljIGNoZWNrIG9mIGJhZCBTSEEtMScgJwogCXJlYmFzZV9zZXR1cF9hbmRfY2xlYW4gYmFkLXNoYSAmJgotCXNldF9mYWtlX2VkaXRvciAmJgotCXRlc3RfbXVzdF9mYWlsIGVudiBGQUtFX0xJTkVTPSIxIDIgZWRpdCBmYWtlc2hhIDMgNCA1ICMiIFwKLQkJZ2l0IHJlYmFzZSAtaSAtLXJvb3QgMj5hY3R1YWwgJiYKLQl0ZXN0X2kxOG5ncmVwICJlZGl0IFhYWFhYWFggRmFsc2UgY29tbWl0IiBhY3R1YWwgJiYKLQl0ZXN0X2kxOG5ncmVwICJZb3UgY2FuIGZpeCB0aGlzIHdpdGggLmdpdCByZWJhc2UgLS1lZGl0LXRvZG8uLiIgYWN0dWFsICYmCi0JRkFLRV9MSU5FUz0iMSAyIDQgNSA2IiBnaXQgcmViYXNlIC0tZWRpdC10b2RvICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZW52IEZBS0VfTElORVM9IjEgMiBlZGl0IGZha2VzaGEgMyA0IDUgIyIgXAorCQkJZ2l0IHJlYmFzZSAtaSAtLXJvb3QgMj5hY3R1YWwgJiYKKwkJCXRlc3RfaTE4bmdyZXAgImVkaXQgWFhYWFhYWCBGYWxzZSBjb21taXQiIGFjdHVhbCAmJgorCQkJdGVzdF9pMThuZ3JlcCAiWW91IGNhbiBmaXggdGhpcyB3aXRoIC5naXQgcmViYXNlIC0tZWRpdC10b2RvLi4iIFwKKwkJCQkJYWN0dWFsICYmCisJCUZBS0VfTElORVM9IjEgMiA0IDUgNiIgZ2l0IHJlYmFzZSAtLWVkaXQtdG9kbworCSkgJiYKIAlnaXQgcmViYXNlIC0tY29udGludWUgJiYKIAl0ZXN0IEUgPSAkKGdpdCBjYXQtZmlsZSBjb21taXQgSEVBRCB8IHNlZCAtbmUgXCRwKQogJwpAQCAtMTQyOSwzOSArMTUzNyw3MSBAQAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWJhc2UgLWkgLS1ncGctc2lnbj08a2V5LWlkPicgJwogCXRlc3Rfd2hlbl9maW5pc2hlZCAidGVzdF9taWdodF9mYWlsIGdpdCByZWJhc2UgLS1hYm9ydCIgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSJlZGl0IDEiIGdpdCByZWJhc2UgLWkgLS1ncGctc2lnbj0iXCJTIEkgR25lclwiIiBIRUFEXiBcCi0JCT5vdXQgMj5lcnIgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSJlZGl0IDEiIGdpdCByZWJhc2UgLWkgLS1ncGctc2lnbj0iXCJTIEkgR25lclwiIiBcCisJCQlIRUFEXiA+b3V0IDI+ZXJyCisJKSAmJgogCXRlc3RfaTE4bmdyZXAgIiRTUS1TXCJTIEkgR25lclwiJFNRIiBlcnIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAncmViYXNlIC1pIC0tZ3BnLXNpZ249PGtleS1pZD4gb3ZlcnJpZGVzIGNvbW1pdC5ncGdTaWduJyAnCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJ0ZXN0X21pZ2h0X2ZhaWwgZ2l0IHJlYmFzZSAtLWFib3J0IiAmJgogCXRlc3RfY29uZmlnIGNvbW1pdC5ncGdzaWduIHRydWUgJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKLQlGQUtFX0xJTkVTPSJlZGl0IDEiIGdpdCByZWJhc2UgLWkgLS1ncGctc2lnbj0iXCJTIEkgR25lclwiIiBIRUFEXiBcCi0JCT5vdXQgMj5lcnIgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSJlZGl0IDEiIGdpdCByZWJhc2UgLWkgLS1ncGctc2lnbj0iXCJTIEkgR25lclwiIiBcCisJCQlIRUFEXiA+b3V0IDI+ZXJyCisJKSAmJgogCXRlc3RfaTE4bmdyZXAgIiRTUS1TXCJTIEkgR25lclwiJFNRIiBlcnIKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndmFsaWQgYXV0aG9yIGhlYWRlciBhZnRlciAtLXJvb3Qgc3dhcCcgJwogCXJlYmFzZV9zZXR1cF9hbmRfY2xlYW4gYXV0aG9yLWhlYWRlciBuby1jb25mbGljdC1icmFuY2ggJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAlnaXQgY29tbWl0IC0tYW1lbmQgLS1hdXRob3I9IkF1ICR7U1F9dGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPiIgLS1uby1lZGl0ICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgZ3JlcCBeYXV0aG9yID5leHBlY3RlZCAmJgotCUZBS0VfTElORVM9IjUgMSIgZ2l0IHJlYmFzZSAtaSAtLXJvb3QgJiYKKwkoCisJCXNldF9mYWtlX2VkaXRvciAmJgorCQlGQUtFX0xJTkVTPSI1IDEiIGdpdCByZWJhc2UgLWkgLS1yb290CisJKSAmJgogCWdpdCBjYXQtZmlsZSBjb21taXQgSEVBRF4gfCBncmVwIF5hdXRob3IgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2YWxpZCBhdXRob3IgaGVhZGVyIHdoZW4gYXV0aG9yIGNvbnRhaW5zIHNpbmdsZSBxdW90ZScgJwogCXJlYmFzZV9zZXR1cF9hbmRfY2xlYW4gYXV0aG9yLWhlYWRlciBuby1jb25mbGljdC1icmFuY2ggJiYKLQlzZXRfZmFrZV9lZGl0b3IgJiYKIAlnaXQgY29tbWl0IC0tYW1lbmQgLS1hdXRob3I9IkF1ICR7U1F9dGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPiIgLS1uby1lZGl0ICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgZ3JlcCBeYXV0aG9yID5leHBlY3RlZCAmJgotCUZBS0VfTElORVM9IjIiIGdpdCByZWJhc2UgLWkgSEVBRH4yICYmCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iMiIgZ2l0IHJlYmFzZSAtaSBIRUFEfjIKKwkpICYmCiAJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEIHwgZ3JlcCBeYXV0aG9yID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAncG9zdC1jb21taXQgaG9vayBpcyBjYWxsZWQnICcKKwl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIC5naXQvaG9va3MvcG9zdC1jb21taXQiICYmCisJPmFjdHVhbCAmJgorCW1rZGlyIC1wIC5naXQvaG9va3MgJiYKKwl3cml0ZV9zY3JpcHQgLmdpdC9ob29rcy9wb3N0LWNvbW1pdCA8PC1cRU9TICYmCisJZ2l0IHJldi1wYXJzZSBIRUFEID4+YWN0dWFsCisJRU9TCisJKAorCQlzZXRfZmFrZV9lZGl0b3IgJiYKKwkJRkFLRV9MSU5FUz0iZWRpdCA0IDEgcmV3b3JkIDIgZml4dXAgMyIgZ2l0IHJlYmFzZSAtaSBBIEUgJiYKKwkJZWNobyB4PmZpbGUzICYmCisJCWdpdCBhZGQgZmlsZTMgJiYKKwkJRkFLRV9DT01NSVRfTUVTU0FHRT1lZGl0ZWQgZ2l0IHJlYmFzZSAtLWNvbnRpbnVlCisJKSAmJgorCWdpdCByZXYtcGFyc2UgSEVBREB7NX0gSEVBREB7NH0gSEVBREB7M30gSEVBREB7Mn0gSEVBREB7MX0gSEVBRCBcCisJCT5leHBlY3QgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisnCisKKyMgVGhpcyBtdXN0IGJlIHRoZSBsYXN0IHRlc3QgaW4gdGhpcyBmaWxlCit0ZXN0X2V4cGVjdF9zdWNjZXNzICckRURJVE9SIGFuZCBmcmllbmRzIGFyZSB1bmNoYW5nZWQnICcKKwl0ZXN0X2VkaXRvcl91bmNoYW5nZWQKKycKKwogdGVzdF9kb25lCmRpZmYgLS1naXQgYS90L3QzNDI5LXJlYmFzZS1lZGl0LXRvZG8uc2ggYi90L3QzNDI5LXJlYmFzZS1lZGl0LXRvZG8uc2gKaW5kZXggODczOWNiNi4uYWFlYWM2ZSAxMDA3NTUKLS0tIGEvdC90MzQyOS1yZWJhc2UtZWRpdC10b2RvLnNoCisrKyBiL3QvdDM0MjktcmViYXNlLWVkaXQtdG9kby5zaApAQCAtMTcsNyArMTcsNyBAQAogCXRlc3QgLWUgRgogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzIFNIQTEgJ2xvb3NlIG9iamVjdCBjYWNoZSB2cyByZS1yZWFkaW5nIHRvZG8gbGlzdCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9vc2Ugb2JqZWN0IGNhY2hlIHZzIHJlLXJlYWRpbmcgdG9kbyBsaXN0JyAnCiAJR0lUX1JFQkFTRV9UT0RPPS5naXQvcmViYXNlLW1lcmdlL2dpdC1yZWJhc2UtdG9kbyAmJgogCWV4cG9ydCBHSVRfUkVCQVNFX1RPRE8gJiYKIAl3cml0ZV9zY3JpcHQgYXBwZW5kLXRvZG8uc2ggPDwtXEVPUyAmJgpkaWZmIC0tZ2l0IGEvdC90MzQzMC1yZWJhc2UtbWVyZ2VzLnNoIGIvdC90MzQzMC1yZWJhc2UtbWVyZ2VzLnNoCmluZGV4IDllZmNmNDguLmEzMGQyN2UgMTAwNzU1Ci0tLSBhL3QvdDM0MzAtcmViYXNlLW1lcmdlcy5zaAorKysgYi90L3QzNDMwLXJlYmFzZS1tZXJnZXMuc2gKQEAgLTQwOCw3ICs0MDgsNyBAQAogCXwgfCAqIHRocmVlCiAJfCAqIHwgdHdvCiAJfCB8LwotCSogfCBvbmUKKwkqIC8gb25lCiAJfC8KIAlvIGJlZm9yZS1vY3RvcHVzCiAJRU9GCmRpZmYgLS1naXQgYS90L3QzNDM0LXJlYmFzZS1pMThuLnNoIGIvdC90MzQzNC1yZWJhc2UtaTE4bi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40YjViMTI4Ci0tLSAvZGV2L251bGwKKysrIGIvdC90MzQzNC1yZWJhc2UtaTE4bi5zaApAQCAtMCwwICsxLDg0IEBACisjIS9iaW4vc2gKKyMKKyMgQ29weXJpZ2h0IChjKSAyMDE5IERvYW4gVHJhbiBDb25nIERhbmgKKyMKKwordGVzdF9kZXNjcmlwdGlvbj0ncmViYXNlIHdpdGggY2hhbmdpbmcgZW5jb2RpbmcKKworSW5pdGlhbCBzZXR1cDoKKworMSAtIDIgICAgICAgICAgICAgIG1hc3RlcgorIFwKKyAgMyAtIDQgICAgICAgICAgICBmaXJzdAorICAgXAorICAgIDUgLSA2ICAgICAgICAgIHNlY29uZAorJworCisuIC4vdGVzdC1saWIuc2gKKworY29tcGFyZV9tc2cgKCkgeworCWljb252IC1mICIkMiIgLXQgIiQzIiAiJFRFU1RfRElSRUNUT1JZL3QzNDM0LyQxIiA+ZXhwZWN0ICYmCisJZ2l0IGNhdC1maWxlIGNvbW1pdCBIRUFEID5yYXcgJiYKKwlzZWQgIjEsL14kL2QiIHJhdyA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorfQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwl0ZXN0X2NvbW1pdCBvbmUgJiYKKwlnaXQgYnJhbmNoIGZpcnN0ICYmCisJdGVzdF9jb21taXQgdHdvICYmCisJZ2l0IHN3aXRjaCBmaXJzdCAmJgorCXRlc3RfY29tbWl0IHRocmVlICYmCisJZ2l0IGJyYW5jaCBzZWNvbmQgJiYKKwl0ZXN0X2NvbW1pdCBmb3VyICYmCisJZ2l0IHN3aXRjaCBzZWNvbmQgJiYKKwl0ZXN0X2NvbW1pdCBmaXZlICYmCisJdGVzdF9jb21taXQgc2l4CisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlYmFzZSAtLXJlYmFzZS1tZXJnZXMgdXBkYXRlIGVuY29kaW5nIGV1Y0pQIHRvIFVURi04JyAnCisJZ2l0IHN3aXRjaCAtYyBtZXJnZS1ldWNKUC1VVEYtOCBmaXJzdCAmJgorCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBldWNKUCAmJgorCWdpdCBtZXJnZSAtRiAiJFRFU1RfRElSRUNUT1JZL3QzNDM0L2V1Y0pQLnR4dCIgc2Vjb25kICYmCisJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIFVURi04ICYmCisJZ2l0IHJlYmFzZSAtLXJlYmFzZS1tZXJnZXMgbWFzdGVyICYmCisJY29tcGFyZV9tc2cgZXVjSlAudHh0IGV1Y0pQIFVURi04CisnCisKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJ3JlYmFzZSAtLXJlYmFzZS1tZXJnZXMgdXBkYXRlIGVuY29kaW5nIGV1Y0pQIHRvIElTTy0yMDIyLUpQJyAnCisJZ2l0IHN3aXRjaCAtYyBtZXJnZS1ldWNKUC1JU08tMjAyMi1KUCBmaXJzdCAmJgorCWdpdCBjb25maWcgaTE4bi5jb21taXRlbmNvZGluZyBldWNKUCAmJgorCWdpdCBtZXJnZSAtRiAiJFRFU1RfRElSRUNUT1JZL3QzNDM0L2V1Y0pQLnR4dCIgc2Vjb25kICYmCisJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nIElTTy0yMDIyLUpQICYmCisJZ2l0IHJlYmFzZSAtLXJlYmFzZS1tZXJnZXMgbWFzdGVyICYmCisJY29tcGFyZV9tc2cgZXVjSlAudHh0IGV1Y0pQIElTTy0yMDIyLUpQCisnCisKK3Rlc3RfcmViYXNlX2NvbnRpbnVlX3VwZGF0ZV9lbmNvZGUgKCkgeworCW9sZD0kMQorCW5ldz0kMgorCW1zZ2ZpbGU9JDMKKwl0ZXN0X2V4cGVjdF9zdWNjZXNzICJyZWJhc2UgLS1jb250aW51ZSB1cGRhdGUgZnJvbSAkb2xkIHRvICRuZXciICcKKwkJKGdpdCByZWJhc2UgLS1hYm9ydCB8fCA6IGFib3J0IGN1cnJlbnQgZ2l0LXJlYmFzZSBmYWlsdXJlKSAmJgorCQlnaXQgc3dpdGNoIC1jIGNvbmZsaWN0LSRvbGQtJG5ldyBvbmUgJiYKKwkJZWNobyBmb3ItY29uZmxpY3QgPnR3by50ICYmCisJCWdpdCBhZGQgdHdvLnQgJiYKKwkJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nICRvbGQgJiYKKwkJZ2l0IGNvbW1pdCAtRiAiJFRFU1RfRElSRUNUT1JZL3QzNDM0LyRtc2dmaWxlIiAmJgorCQlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgJG5ldyAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmViYXNlIC1tIG1hc3RlciAmJgorCQl0ZXN0IC1mIC5naXQvcmViYXNlLW1lcmdlL21lc3NhZ2UgJiYKKwkJZ2l0IHN0cmlwc3BhY2UgPC5naXQvcmViYXNlLW1lcmdlL21lc3NhZ2UgPnR3by50ICYmCisJCWdpdCBhZGQgdHdvLnQgJiYKKwkJZ2l0IHJlYmFzZSAtLWNvbnRpbnVlICYmCisJCWNvbXBhcmVfbXNnICRtc2dmaWxlICRvbGQgJG5ldyAmJgorCQk6IGdpdC1jb21taXQgYXNzdW1lIGludmFsaWQgdXRmLTggaXMgbGF0aW4xICYmCisJCXRlc3RfY21wIGV4cGVjdCB0d28udAorCScKK30KKwordGVzdF9yZWJhc2VfY29udGludWVfdXBkYXRlX2VuY29kZSBJU08tODg1OS0xIFVURi04IElTTzg4NTktMS50eHQKK3Rlc3RfcmViYXNlX2NvbnRpbnVlX3VwZGF0ZV9lbmNvZGUgZXVjSlAgVVRGLTggZXVjSlAudHh0Cit0ZXN0X3JlYmFzZV9jb250aW51ZV91cGRhdGVfZW5jb2RlIGV1Y0pQIElTTy0yMDIyLUpQIGV1Y0pQLnR4dAorCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM0MzQvSVNPODg1OS0xLnR4dCBiL3QvdDM0MzQvSVNPODg1OS0xLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2JlZjBlCi0tLSAvZGV2L251bGwKKysrIGIvdC90MzQzNC9JU084ODU5LTEudHh0CkBAIC0wLDAgKzEsMyBAQAorxMvRz9YKKworwWLnZOhmZwpkaWZmIC0tZ2l0IGEvdC90MzQzNC9ldWNKUC50eHQgYi90L3QzNDM0L2V1Y0pQLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDZmMmFhCi0tLSAvZGV2L251bGwKKysrIGIvdC90MzQzNC9ldWNKUC50eHQKQEAgLTAsMCArMSw0IEBACiukz6TspNKk26TVCisKK6S3pMakpKTrpM6krKGipKSk66TOpMehowor38DJzaTbpOyk16TqpN2k7KTepNOksKTqpO2k2KGjCmRpZmYgLS1naXQgYS90L3QzOTAwLWkxOG4tY29tbWl0LnNoIGIvdC90MzkwMC1pMThuLWNvbW1pdC5zaAppbmRleCBiOTJmZjk1Li5kMjc3YTlmIDEwMDc1NQotLS0gYS90L3QzOTAwLWkxOG4tY29tbWl0LnNoCisrKyBiL3QvdDM5MDAtaTE4bi1jb21taXQuc2gKQEAgLTIwNCw0ICsyMDQsNDEgQEAKIAogdGVzdF9jb21taXRfYXV0b3NxdWFzaF9mbGFncyBJU08tMjAyMi1KUCBzcXVhc2gKIAordGVzdF9jb21taXRfYXV0b3NxdWFzaF9tdWx0aV9lbmNvZGluZyAoKSB7CisJZmxhZz0kMQorCW9sZD0kMgorCW5ldz0kMworCW1zZz0kNAorCXRlc3RfZXhwZWN0X3N1Y2Nlc3MgImNvbW1pdCAtLSRmbGFnIGludG8gJG9sZCBmcm9tICRuZXciICcKKwkJZ2l0IGNoZWNrb3V0IC1iICRmbGFnLSRvbGQtJG5ldyBDMCAmJgorCQlnaXQgY29uZmlnIGkxOG4uY29tbWl0ZW5jb2RpbmcgJG9sZCAmJgorCQllY2hvICRvbGQgPj5GICYmCisJCWdpdCBjb21taXQgLWEgLUYgIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvJG1zZyAmJgorCQl0ZXN0X3RpY2sgJiYKKwkJZWNobyBpbnRlcm1lZGlhdGUgc3R1ZmYgPj5HICYmCisJCWdpdCBhZGQgRyAmJgorCQlnaXQgY29tbWl0IC1hIC1tICJpbnRlcm1lZGlhdGUgY29tbWl0IiAmJgorCQl0ZXN0X3RpY2sgJiYKKwkJZ2l0IGNvbmZpZyBpMThuLmNvbW1pdGVuY29kaW5nICRuZXcgJiYKKwkJZWNobyAkbmV3LSRmbGFnID4+RiAmJgorCQlnaXQgY29tbWl0IC1hIC0tJGZsYWcgSEVBRF4gJiYKKwkJZ2l0IHJlYmFzZSAtLWF1dG9zcXVhc2ggLWkgSEVBRF5eXiAmJgorCQlnaXQgcmV2LWxpc3QgSEVBRCA+YWN0dWFsICYmCisJCXRlc3RfbGluZV9jb3VudCA9IDMgYWN0dWFsICYmCisJCWljb252IC1mICRvbGQgLXQgVVRGLTggIiRURVNUX0RJUkVDVE9SWSIvdDM5MDAvJG1zZyA+ZXhwZWN0ICYmCisJCWlmIHRlc3QgJGZsYWcgPSBzcXVhc2g7IHRoZW4KKwkJCXN1YmplY3Q9IiQoaGVhZCAtMSBleHBlY3QpIiAmJgorCQkJcHJpbnRmICJcbnNxdWFzaCEgJXNcbiIgIiRzdWJqZWN0IiA+PmV4cGVjdAorCQlmaSAmJgorCQlnaXQgY2F0LWZpbGUgY29tbWl0IEhFQUReID5yYXcgJiYKKwkJKHNlZCAiMSwvXiQvZCIgcmF3IHwgaWNvbnYgLWYgJG5ldyAtdCB1dGYtOCkgPmFjdHVhbCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCisJJworfQorCit0ZXN0X2NvbW1pdF9hdXRvc3F1YXNoX211bHRpX2VuY29kaW5nIGZpeHVwIFVURi04IElTTy04ODU5LTEgMS1VVEYtOC50eHQKK3Rlc3RfY29tbWl0X2F1dG9zcXVhc2hfbXVsdGlfZW5jb2Rpbmcgc3F1YXNoIElTTy04ODU5LTEgVVRGLTggSVNPODg1OS0xLnR4dAordGVzdF9jb21taXRfYXV0b3NxdWFzaF9tdWx0aV9lbmNvZGluZyBzcXVhc2ggZXVjSlAgSVNPLTIwMjItSlAgZXVjSlAudHh0Cit0ZXN0X2NvbW1pdF9hdXRvc3F1YXNoX211bHRpX2VuY29kaW5nIGZpeHVwIElTTy0yMDIyLUpQIFVURi04IElTTy0yMDIyLUpQLnR4dAorCiB0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDM5MDMtc3Rhc2guc2ggYi90L3QzOTAzLXN0YXNoLnNoCmluZGV4IDU4MGJmYmQuLmVhNTZlODUgMTAwNzU1Ci0tLSBhL3QvdDM5MDMtc3Rhc2guc2gKKysrIGIvdC90MzkwMy1zdGFzaC5zaApAQCAtMjQ0LDggKzI0NCwxMSBAQAogCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQub3V0CiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3BvcCAtcSBpcyBxdWlldCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAncG9wIC1xIHdvcmtzIGFuZCBpcyBxdWlldCcgJwogCWdpdCBzdGFzaCBwb3AgLXEgPm91dHB1dC5vdXQgMj4mMSAmJgorCWVjaG8gYmFyID5leHBlY3QgJiYKKwlnaXQgc2hvdyA6ZmlsZSA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgogCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXRwdXQub3V0CiAnCiAKQEAgLTI1NCw2ICsyNTcsOCBAQAogCWdpdCBhZGQgZmlsZSAmJgogCWdpdCBzdGFzaCBzYXZlIC0tcXVpZXQgJiYKIAlnaXQgc3Rhc2ggcG9wIC1xIC0taW5kZXggPm91dHB1dC5vdXQgMj4mMSAmJgorCWdpdCBkaWZmLWZpbGVzIGZpbGUyID5maWxlMi5kaWZmICYmCisJdGVzdF9tdXN0X2JlX2VtcHR5IGZpbGUyLmRpZmYgJiYKIAl0ZXN0IGZvbyA9ICIkKGdpdCBzaG93IDpmaWxlKSIgJiYKIAl0ZXN0X211c3RfYmVfZW1wdHkgb3V0cHV0Lm91dAogJwpAQCAtMTI2OSw0ICsxMjc0LDE1IEBACiAJZ2l0IHN0YXNoIGFwcGx5CiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXNoIGhhbmRsZXMgc2tpcC13b3JrdHJlZSBlbnRyaWVzIG5pY2VseScgJworCXRlc3RfY29tbWl0IEEgJiYKKwllY2hvIGNoYW5nZWQgPkEudCAmJgorCWdpdCBhZGQgQS50ICYmCisJZ2l0IHVwZGF0ZS1pbmRleCAtLXNraXAtd29ya3RyZWUgQS50ICYmCisJcm0gQS50ICYmCisJZ2l0IHN0YXNoICYmCisKKwlnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IHJlZnMvc3Rhc2g6QS50CisnCisKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90MzkwNS1zdGFzaC1pbmNsdWRlLXVudHJhY2tlZC5zaCBiL3QvdDM5MDUtc3Rhc2gtaW5jbHVkZS11bnRyYWNrZWQuc2gKaW5kZXggMjljYTc2Zi4uZjA3NWM3ZiAxMDA3NTUKLS0tIGEvdC90MzkwNS1zdGFzaC1pbmNsdWRlLXVudHJhY2tlZC5zaAorKysgYi90L3QzOTA1LXN0YXNoLWluY2x1ZGUtdW50cmFja2VkLnNoCkBAIC0yNzcsOCArMjc3LDggQEAKIAl0ZXN0X3BhdGhfaXNfZmlsZSBpZ25vcmVkLmQvYmFyCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N0YXNoIC11IC0tIDxub24tZXhpc3RhbnQ+IHNob3dzIG5vIGNoYW5nZXMgd2hlbiB0aGVyZSBhcmUgbm9uZScgJwotCWdpdCBzdGFzaCBwdXNoIC11IC0tIG5vbi1leGlzdGFudCA+YWN0dWFsICYmCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdGFzaCAtdSAtLSA8bm9uLWV4aXN0ZW50PiBzaG93cyBubyBjaGFuZ2VzIHdoZW4gdGhlcmUgYXJlIG5vbmUnICcKKwlnaXQgc3Rhc2ggcHVzaCAtdSAtLSBub24tZXhpc3RlbnQgPmFjdHVhbCAmJgogCWVjaG8gIk5vIGxvY2FsIGNoYW5nZXMgdG8gc2F2ZSIgPmV4cGVjdCAmJgogCXRlc3RfaTE4bmNtcCBleHBlY3QgYWN0dWFsCiAnCmRpZmYgLS1naXQgYS90L3Q0MDEwLWRpZmYtcGF0aHNwZWMuc2ggYi90L3Q0MDEwLWRpZmYtcGF0aHNwZWMuc2gKaW5kZXggMjgxZjhmYS4uZTVjYTM1OSAxMDA3NTUKLS0tIGEvdC90NDAxMC1kaWZmLXBhdGhzcGVjLnNoCisrKyBiL3QvdDQwMTAtZGlmZi1wYXRoc3BlYy5zaApAQCAtMTcsMTEgKzE3LDE1IEBACiAgICAgJ2VjaG8gZnJvdHogPmZpbGUwICYmCiAgICAgIG1rZGlyIHBhdGgxICYmCiAgICAgIGVjaG8gcmV6cm92ID5wYXRoMS9maWxlMSAmJgorICAgICBiZWZvcmUwPSQoZ2l0IGhhc2gtb2JqZWN0IGZpbGUwKSAmJgorICAgICBiZWZvcmUxPSQoZ2l0IGhhc2gtb2JqZWN0IHBhdGgxL2ZpbGUxKSAmJgogICAgICBnaXQgdXBkYXRlLWluZGV4IC0tYWRkIGZpbGUwIHBhdGgxL2ZpbGUxICYmCiAgICAgIHRyZWU9JChnaXQgd3JpdGUtdHJlZSkgJiYKICAgICAgZWNobyAiJHRyZWUiICYmCiAgICAgIGVjaG8gbml0Zm9sID5maWxlMCAmJgogICAgICBlY2hvIHlvbWluID5wYXRoMS9maWxlMSAmJgorICAgICBhZnRlcjA9JChnaXQgaGFzaC1vYmplY3QgZmlsZTApICYmCisgICAgIGFmdGVyMT0kKGdpdCBoYXNoLW9iamVjdCBwYXRoMS9maWxlMSkgJiYKICAgICAgZ2l0IHVwZGF0ZS1pbmRleCBmaWxlMCBwYXRoMS9maWxlMScKIAogY2F0ID5leHBlY3RlZCA8PFxFT0YKQEAgLTMxLDMyICszNSwzMiBAQAogICAgICdnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCAkdHJlZSAtLSBwYXRoID5jdXJyZW50ICYmCiAgICAgIGNvbXBhcmVfZGlmZl9yYXcgY3VycmVudCBleHBlY3RlZCcKIAotY2F0ID5leHBlY3RlZCA8PFxFT0YKLToxMDA2NDQgMTAwNjQ0IDc2NjQ5OGQ5M2E0YjA2MDU3YThlNDlkMjNmNDA2OGYxMTcwZmYzOGYgMGE0MWUxMTVhYjYxYmUwMzI4YTE5YjI5ZjE4Y2RjYjQ5MzM4ZDUxNiBNCXBhdGgxL2ZpbGUxCitjYXQgPmV4cGVjdGVkIDw8RU9GCis6MTAwNjQ0IDEwMDY0NCAkYmVmb3JlMSAkYWZ0ZXIxIE0JcGF0aDEvZmlsZTEKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2xpbWl0IHRvIHBhdGgxIHNob3VsZCBzaG93IHBhdGgxL2ZpbGUxJyBcCiAgICAgJ2dpdCBkaWZmLWluZGV4IC0tY2FjaGVkICR0cmVlIC0tIHBhdGgxID5jdXJyZW50ICYmCiAgICAgIGNvbXBhcmVfZGlmZl9yYXcgY3VycmVudCBleHBlY3RlZCcKIAotY2F0ID5leHBlY3RlZCA8PFxFT0YKLToxMDA2NDQgMTAwNjQ0IDc2NjQ5OGQ5M2E0YjA2MDU3YThlNDlkMjNmNDA2OGYxMTcwZmYzOGYgMGE0MWUxMTVhYjYxYmUwMzI4YTE5YjI5ZjE4Y2RjYjQ5MzM4ZDUxNiBNCXBhdGgxL2ZpbGUxCitjYXQgPmV4cGVjdGVkIDw8RU9GCis6MTAwNjQ0IDEwMDY0NCAkYmVmb3JlMSAkYWZ0ZXIxIE0JcGF0aDEvZmlsZTEKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyBcCiAgICAgJ2xpbWl0IHRvIHBhdGgxLyBzaG91bGQgc2hvdyBwYXRoMS9maWxlMScgXAogICAgICdnaXQgZGlmZi1pbmRleCAtLWNhY2hlZCAkdHJlZSAtLSBwYXRoMS8gPmN1cnJlbnQgJiYKICAgICAgY29tcGFyZV9kaWZmX3JhdyBjdXJyZW50IGV4cGVjdGVkJwogCi1jYXQgPmV4cGVjdGVkIDw8XEVPRgotOjEwMDY0NCAxMDA2NDQgNzY2NDk4ZDkzYTRiMDYwNTdhOGU0OWQyM2Y0MDY4ZjExNzBmZjM4ZiAwYTQxZTExNWFiNjFiZTAzMjhhMTliMjlmMThjZGNiNDkzMzhkNTE2IE0JcGF0aDEvZmlsZTEKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKKzoxMDA2NDQgMTAwNjQ0ICRiZWZvcmUxICRhZnRlcjEgTQlwYXRoMS9maWxlMQogRU9GCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnIipmaWxlMSIgc2hvdWxkIHNob3cgcGF0aDEvZmlsZTEnIFwKICAgICAnZ2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgJHRyZWUgLS0gIipmaWxlMSIgPmN1cnJlbnQgJiYKICAgICAgY29tcGFyZV9kaWZmX3JhdyBjdXJyZW50IGV4cGVjdGVkJwogCi1jYXQgPmV4cGVjdGVkIDw8XEVPRgotOjEwMDY0NCAxMDA2NDQgOGU0MDIwYmI1YThkOGM4NzNiMjVkZTE1OTMzZTc1Y2MwZmMyNzVkZiBkY2E2YjkyMzAzYmVmYzkzMDg2YWEwMjVkOTBhNWZhY2Q3ZWIyODEyIE0JZmlsZTAKK2NhdCA+ZXhwZWN0ZWQgPDxFT0YKKzoxMDA2NDQgMTAwNjQ0ICRiZWZvcmUwICRhZnRlcjAgTQlmaWxlMAogRU9GCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFwKICAgICAnbGltaXQgdG8gZmlsZTAgc2hvdWxkIHNob3cgZmlsZTAnIFwKZGlmZiAtLWdpdCBhL3QvdDQwMTEtZGlmZi1zeW1saW5rLnNoIGIvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2gKaW5kZXggNWFlMTliOS4uNzE3MDM0YiAxMDA3NTUKLS0tIGEvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2gKKysrIGIvdC90NDAxMS1kaWZmLXN5bWxpbmsuc2gKQEAgLTksMTEgKzksMjQgQEAKIC4gLi90ZXN0LWxpYi5zaAogLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaAogCisjIFByaW50IHRoZSBzaG9ydCBPSUQgb2YgYSBzeW1saW5rIHdpdGggdGhlIGdpdmVuIG5hbWUuCitzeW1saW5rX29pZCAoKSB7CisJbG9jYWwgb2lkPSQocHJpbnRmICIlcyIgIiQxIiB8IGdpdCBoYXNoLW9iamVjdCAtLXN0ZGluKSAmJgorCWdpdCByZXYtcGFyc2UgLS1zaG9ydCAiJG9pZCIKK30KKworIyBQcmludCB0aGUgc2hvcnQgT0lEIG9mIHRoZSBnaXZlbiBmaWxlLgorc2hvcnRfb2lkICgpIHsKKwlsb2NhbCBvaWQ9JChnaXQgaGFzaC1vYmplY3QgIiQxIikgJiYKKwlnaXQgcmV2LXBhcnNlIC0tc2hvcnQgIiRvaWQiCit9CisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgbmV3IHN5bWxpbmsgYW5kIGZpbGUnICcKLQljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKKwlzeW1saW5rPSQoc3ltbGlua19vaWQgeHl6enkpICYmCisJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKIAlkaWZmIC0tZ2l0IGEvZnJvdHogYi9mcm90egogCW5ldyBmaWxlIG1vZGUgMTIwMDAwCi0JaW5kZXggMDAwMDAwMC4uN2M0NjVhZgorCWluZGV4IDAwMDAwMDAuLiRzeW1saW5rCiAJLS0tIC9kZXYvbnVsbAogCSsrKyBiL2Zyb3R6CiAJQEAgLTAsMCArMSBAQApAQCAtMjEsNyArMzQsNyBAQAogCVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQogCWRpZmYgLS1naXQgYS9uaXRmb2wgYi9uaXRmb2wKIAluZXcgZmlsZSBtb2RlIDEwMDY0NAotCWluZGV4IDAwMDAwMDAuLjdjNDY1YWYKKwlpbmRleCAwMDAwMDAwLi4kc3ltbGluawogCS0tLSAvZGV2L251bGwKIAkrKysgYi9uaXRmb2wKIAlAQCAtMCwwICsxIEBACkBAIC00NiwxMCArNTksMTAgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiByZW1vdmVkIHN5bWxpbmsgYW5kIGZpbGUnICcKLQljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgogCWRpZmYgLS1naXQgYS9mcm90eiBiL2Zyb3R6CiAJZGVsZXRlZCBmaWxlIG1vZGUgMTIwMDAwCi0JaW5kZXggN2M0NjVhZi4uMDAwMDAwMAorCWluZGV4ICRzeW1saW5rLi4wMDAwMDAwCiAJLS0tIGEvZnJvdHoKIAkrKysgL2Rldi9udWxsCiAJQEAgLTEgKzAsMCBAQApAQCAtNTcsNyArNzAsNyBAQAogCVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQogCWRpZmYgLS1naXQgYS9uaXRmb2wgYi9uaXRmb2wKIAlkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLQlpbmRleCA3YzQ2NWFmLi4wMDAwMDAwCisJaW5kZXggJHN5bWxpbmsuLjAwMDAwMDAKIAktLS0gYS9uaXRmb2wKIAkrKysgL2Rldi9udWxsCiAJQEAgLTEgKzAsMCBAQApAQCAtOTAsOSArMTAzLDEwIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgZGlmZmVyZW50IHN5bWxpbmsgYW5kIGZpbGUnICcKLQljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKKwluZXc9JChzeW1saW5rX29pZCB5eHl5eikgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgogCWRpZmYgLS1naXQgYS9mcm90eiBiL2Zyb3R6Ci0JaW5kZXggN2M0NjVhZi4uZGYxZGI1NCAxMjAwMDAKKwlpbmRleCAkc3ltbGluay4uJG5ldyAxMjAwMDAKIAktLS0gYS9mcm90egogCSsrKyBiL2Zyb3R6CiAJQEAgLTEgKzEgQEAKQEAgLTEwMSw3ICsxMTUsNyBAQAogCSt5eHl5egogCVwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQogCWRpZmYgLS1naXQgYS9uaXRmb2wgYi9uaXRmb2wKLQlpbmRleCA3YzQ2NWFmLi5kZjFkYjU0IDEwMDY0NAorCWluZGV4ICRzeW1saW5rLi4kbmV3IDEwMDY0NAogCS0tLSBhL25pdGZvbAogCSsrKyBiL25pdGZvbAogCUBAIC0xICsxIEBACkBAIC0xMzcsMTQgKzE1MSwxNiBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIFNZTUxJTktTICdzeW1saW5rcyBkbyBub3QgcmVzcGVjdCB1c2VyZGlmZiBjb25maWcgYnkgcGF0aCcgJwotCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlmaWxlPSQoc2hvcnRfb2lkIGZpbGUuYmluKSAmJgorCWxpbms9JChzeW1saW5rX29pZCBmaWxlLmJpbikgJiYKKwljYXQgPmV4cGVjdCA8PC1FT0YgJiYKIAlkaWZmIC0tZ2l0IGEvZmlsZS5iaW4gYi9maWxlLmJpbgogCW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci0JaW5kZXggMDAwMDAwMC4uZDk1ZjNhZAorCWluZGV4IDAwMDAwMDAuLiRmaWxlCiAJQmluYXJ5IGZpbGVzIC9kZXYvbnVsbCBhbmQgYi9maWxlLmJpbiBkaWZmZXIKIAlkaWZmIC0tZ2l0IGEvbGluay5iaW4gYi9saW5rLmJpbgogCW5ldyBmaWxlIG1vZGUgMTIwMDAwCi0JaW5kZXggMDAwMDAwMC4uZGNlNDFlYworCWluZGV4IDAwMDAwMDAuLiRsaW5rCiAJLS0tIC9kZXYvbnVsbAogCSsrKyBiL2xpbmsuYmluCiAJQEAgLTAsMCArMSBAQApkaWZmIC0tZ2l0IGEvdC90NDAxNC1mb3JtYXQtcGF0Y2guc2ggYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAppbmRleCBiODk2OTk5Li42OTI2N2IxIDEwMDc1NQotLS0gYS90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaAorKysgYi90L3Q0MDE0LWZvcm1hdC1wYXRjaC5zaApAQCAtMTUxNyw2ICsxNTE3LDE3OCBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHdpdGggaW52YWxpZCAtLWNvdmVyLWZyb20tZGVzY3JpcHRpb24gYW5kIGNvbmZpZycgJworCXRlc3RfY29uZmlnIGJyYW5jaC5yZWJ1aWxkLTEuZGVzY3JpcHRpb24gImNvbmZpZyBzdWJqZWN0CisKK2JvZHkiICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGZvcm1hdC1wYXRjaCAtLWNvdmVyLWxldHRlciAtLWNvdmVyLWZyb20tZGVzY3JpcHRpb24gZ2FyYmFnZSBtYXN0ZXIgJiYKKwl0ZXN0X2NvbmZpZyBmb3JtYXQuY292ZXJGcm9tRGVzY3JpcHRpb24gZ2FyYmFnZSAmJgorCXRlc3RfbXVzdF9mYWlsIGdpdCBmb3JtYXQtcGF0Y2ggLS1jb3Zlci1sZXR0ZXIgbWFzdGVyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvdmVyIGxldHRlciB3aXRoIGZvcm1hdC5jb3ZlckZyb21EZXNjcmlwdGlvbiA9IGRlZmF1bHQnICcKKwl0ZXN0X2NvbmZpZyBicmFuY2gucmVidWlsZC0xLmRlc2NyaXB0aW9uICJjb25maWcgc3ViamVjdAorCitib2R5IiAmJgorCXRlc3RfY29uZmlnIGZvcm1hdC5jb3ZlckZyb21EZXNjcmlwdGlvbiBkZWZhdWx0ICYmCisJZ2l0IGNoZWNrb3V0IHJlYnVpbGQtMSAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgbWFzdGVyID5hY3R1YWwgJiYKKwlncmVwICJeU3ViamVjdDogXFtQQVRDSCAwLzJcXSBcKlwqXCogU1VCSkVDVCBIRVJFIFwqXCpcKiQiIGFjdHVhbCAmJgorCSEgZ3JlcCAiXlwqXCpcKiBCTFVSQiBIRVJFIFwqXCpcKiQiIGFjdHVhbCAmJgorCWdyZXAgIl5jb25maWcgc3ViamVjdCQiIGFjdHVhbCAmJgorCWdyZXAgIl5ib2R5JCIgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvdmVyIGxldHRlciB3aXRoIC0tY292ZXItZnJvbS1kZXNjcmlwdGlvbiBkZWZhdWx0JyAnCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiAiY29uZmlnIHN1YmplY3QKKworYm9keSIgJiYKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLWNvdmVyLWxldHRlciAtLWNvdmVyLWZyb20tZGVzY3JpcHRpb24gZGVmYXVsdCBtYXN0ZXIgPmFjdHVhbCAmJgorCWdyZXAgIl5TdWJqZWN0OiBcW1BBVENIIDAvMlxdIFwqXCpcKiBTVUJKRUNUIEhFUkUgXCpcKlwqJCIgYWN0dWFsICYmCisJISBncmVwICJeXCpcKlwqIEJMVVJCIEhFUkUgXCpcKlwqJCIgYWN0dWFsICYmCisJZ3JlcCAiXmNvbmZpZyBzdWJqZWN0JCIgYWN0dWFsICYmCisJZ3JlcCAiXmJvZHkkIiBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHdpdGggZm9ybWF0LmNvdmVyRnJvbURlc2NyaXB0aW9uID0gbm9uZScgJworCXRlc3RfY29uZmlnIGJyYW5jaC5yZWJ1aWxkLTEuZGVzY3JpcHRpb24gImNvbmZpZyBzdWJqZWN0CisKK2JvZHkiICYmCisJdGVzdF9jb25maWcgZm9ybWF0LmNvdmVyRnJvbURlc2NyaXB0aW9uIG5vbmUgJiYKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLWNvdmVyLWxldHRlciBtYXN0ZXIgPmFjdHVhbCAmJgorCWdyZXAgIl5TdWJqZWN0OiBcW1BBVENIIDAvMlxdIFwqXCpcKiBTVUJKRUNUIEhFUkUgXCpcKlwqJCIgYWN0dWFsICYmCisJZ3JlcCAiXlwqXCpcKiBCTFVSQiBIRVJFIFwqXCpcKiQiIGFjdHVhbCAmJgorCSEgZ3JlcCAiXmNvbmZpZyBzdWJqZWN0JCIgYWN0dWFsICYmCisJISBncmVwICJeYm9keSQiIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgd2l0aCAtLWNvdmVyLWZyb20tZGVzY3JpcHRpb24gbm9uZScgJworCXRlc3RfY29uZmlnIGJyYW5jaC5yZWJ1aWxkLTEuZGVzY3JpcHRpb24gImNvbmZpZyBzdWJqZWN0CisKK2JvZHkiICYmCisJZ2l0IGNoZWNrb3V0IHJlYnVpbGQtMSAmJgorCWdpdCBmb3JtYXQtcGF0Y2ggLS1zdGRvdXQgLS1jb3Zlci1sZXR0ZXIgLS1jb3Zlci1mcm9tLWRlc2NyaXB0aW9uIG5vbmUgbWFzdGVyID5hY3R1YWwgJiYKKwlncmVwICJeU3ViamVjdDogXFtQQVRDSCAwLzJcXSBcKlwqXCogU1VCSkVDVCBIRVJFIFwqXCpcKiQiIGFjdHVhbCAmJgorCWdyZXAgIl5cKlwqXCogQkxVUkIgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5jb25maWcgc3ViamVjdCQiIGFjdHVhbCAmJgorCSEgZ3JlcCAiXmJvZHkkIiBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHdpdGggZm9ybWF0LmNvdmVyRnJvbURlc2NyaXB0aW9uID0gbWVzc2FnZScgJworCXRlc3RfY29uZmlnIGJyYW5jaC5yZWJ1aWxkLTEuZGVzY3JpcHRpb24gImNvbmZpZyBzdWJqZWN0CisKK2JvZHkiICYmCisJdGVzdF9jb25maWcgZm9ybWF0LmNvdmVyRnJvbURlc2NyaXB0aW9uIG1lc3NhZ2UgJiYKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLWNvdmVyLWxldHRlciBtYXN0ZXIgPmFjdHVhbCAmJgorCWdyZXAgIl5TdWJqZWN0OiBcW1BBVENIIDAvMlxdIFwqXCpcKiBTVUJKRUNUIEhFUkUgXCpcKlwqJCIgYWN0dWFsICYmCisJISBncmVwICJeXCpcKlwqIEJMVVJCIEhFUkUgXCpcKlwqJCIgYWN0dWFsICYmCisJZ3JlcCAiXmNvbmZpZyBzdWJqZWN0JCIgYWN0dWFsICYmCisJZ3JlcCAiXmJvZHkkIiBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHdpdGggLS1jb3Zlci1mcm9tLWRlc2NyaXB0aW9uIG1lc3NhZ2UnICcKKwl0ZXN0X2NvbmZpZyBicmFuY2gucmVidWlsZC0xLmRlc2NyaXB0aW9uICJjb25maWcgc3ViamVjdAorCitib2R5IiAmJgorCWdpdCBjaGVja291dCByZWJ1aWxkLTEgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tY292ZXItbGV0dGVyIC0tY292ZXItZnJvbS1kZXNjcmlwdGlvbiBtZXNzYWdlIG1hc3RlciA+YWN0dWFsICYmCisJZ3JlcCAiXlN1YmplY3Q6IFxbUEFUQ0ggMC8yXF0gXCpcKlwqIFNVQkpFQ1QgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5cKlwqXCogQkxVUkIgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwlncmVwICJeY29uZmlnIHN1YmplY3QkIiBhY3R1YWwgJiYKKwlncmVwICJeYm9keSQiIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgd2l0aCBmb3JtYXQuY292ZXJGcm9tRGVzY3JpcHRpb24gPSBzdWJqZWN0JyAnCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiAiY29uZmlnIHN1YmplY3QKKworYm9keSIgJiYKKwl0ZXN0X2NvbmZpZyBmb3JtYXQuY292ZXJGcm9tRGVzY3JpcHRpb24gc3ViamVjdCAmJgorCWdpdCBjaGVja291dCByZWJ1aWxkLTEgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tY292ZXItbGV0dGVyIG1hc3RlciA+YWN0dWFsICYmCisJZ3JlcCAiXlN1YmplY3Q6IFxbUEFUQ0ggMC8yXF0gY29uZmlnIHN1YmplY3QkIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5cKlwqXCogQkxVUkIgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5jb25maWcgc3ViamVjdCQiIGFjdHVhbCAmJgorCWdyZXAgIl5ib2R5JCIgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvdmVyIGxldHRlciB3aXRoIC0tY292ZXItZnJvbS1kZXNjcmlwdGlvbiBzdWJqZWN0JyAnCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiAiY29uZmlnIHN1YmplY3QKKworYm9keSIgJiYKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLWNvdmVyLWxldHRlciAtLWNvdmVyLWZyb20tZGVzY3JpcHRpb24gc3ViamVjdCBtYXN0ZXIgPmFjdHVhbCAmJgorCWdyZXAgIl5TdWJqZWN0OiBcW1BBVENIIDAvMlxdIGNvbmZpZyBzdWJqZWN0JCIgYWN0dWFsICYmCisJISBncmVwICJeXCpcKlwqIEJMVVJCIEhFUkUgXCpcKlwqJCIgYWN0dWFsICYmCisJISBncmVwICJeY29uZmlnIHN1YmplY3QkIiBhY3R1YWwgJiYKKwlncmVwICJeYm9keSQiIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgd2l0aCBmb3JtYXQuY292ZXJGcm9tRGVzY3JpcHRpb24gPSBhdXRvIChzaG9ydCBzdWJqZWN0IGxpbmUpJyAnCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiAiY29uZmlnIHN1YmplY3QKKworYm9keSIgJiYKKwl0ZXN0X2NvbmZpZyBmb3JtYXQuY292ZXJGcm9tRGVzY3JpcHRpb24gYXV0byAmJgorCWdpdCBjaGVja291dCByZWJ1aWxkLTEgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tY292ZXItbGV0dGVyIG1hc3RlciA+YWN0dWFsICYmCisJZ3JlcCAiXlN1YmplY3Q6IFxbUEFUQ0ggMC8yXF0gY29uZmlnIHN1YmplY3QkIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5cKlwqXCogQkxVUkIgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5jb25maWcgc3ViamVjdCQiIGFjdHVhbCAmJgorCWdyZXAgIl5ib2R5JCIgYWN0dWFsCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvdmVyIGxldHRlciB3aXRoIC0tY292ZXItZnJvbS1kZXNjcmlwdGlvbiBhdXRvIChzaG9ydCBzdWJqZWN0IGxpbmUpJyAnCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiAiY29uZmlnIHN1YmplY3QKKworYm9keSIgJiYKKwlnaXQgY2hlY2tvdXQgcmVidWlsZC0xICYmCisJZ2l0IGZvcm1hdC1wYXRjaCAtLXN0ZG91dCAtLWNvdmVyLWxldHRlciAtLWNvdmVyLWZyb20tZGVzY3JpcHRpb24gYXV0byBtYXN0ZXIgPmFjdHVhbCAmJgorCWdyZXAgIl5TdWJqZWN0OiBcW1BBVENIIDAvMlxdIGNvbmZpZyBzdWJqZWN0JCIgYWN0dWFsICYmCisJISBncmVwICJeXCpcKlwqIEJMVVJCIEhFUkUgXCpcKlwqJCIgYWN0dWFsICYmCisJISBncmVwICJeY29uZmlnIHN1YmplY3QkIiBhY3R1YWwgJiYKKwlncmVwICJeYm9keSQiIGFjdHVhbAorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb3ZlciBsZXR0ZXIgd2l0aCBmb3JtYXQuY292ZXJGcm9tRGVzY3JpcHRpb24gPSBhdXRvIChsb25nIHN1YmplY3QgbGluZSknICcKKwl0ZXN0X2NvbmZpZyBicmFuY2gucmVidWlsZC0xLmRlc2NyaXB0aW9uICJ0aGlzIGlzIGEgcmVhbGx5IGxvbmcgZmlyc3QgbGluZSBhbmQgaXQgaXMgb3ZlciAxMDAgY2hhcmFjdGVycyBsb25nIHdoaWNoIGlzIHRoZSB0aHJlc2hvbGQgZm9yIGxvbmcgc3ViamVjdHMKKworYm9keSIgJiYKKwl0ZXN0X2NvbmZpZyBmb3JtYXQuY292ZXJGcm9tRGVzY3JpcHRpb24gYXV0byAmJgorCWdpdCBjaGVja291dCByZWJ1aWxkLTEgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tY292ZXItbGV0dGVyIG1hc3RlciA+YWN0dWFsICYmCisJZ3JlcCAiXlN1YmplY3Q6IFxbUEFUQ0ggMC8yXF0gXCpcKlwqIFNVQkpFQ1QgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5cKlwqXCogQkxVUkIgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwlncmVwICJedGhpcyBpcyBhIHJlYWxseSBsb25nIGZpcnN0IGxpbmUgYW5kIGl0IGlzIG92ZXIgMTAwIGNoYXJhY3RlcnMgbG9uZyB3aGljaCBpcyB0aGUgdGhyZXNob2xkIGZvciBsb25nIHN1YmplY3RzJCIgYWN0dWFsICYmCisJZ3JlcCAiXmJvZHkkIiBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHdpdGggLS1jb3Zlci1mcm9tLWRlc2NyaXB0aW9uIGF1dG8gKGxvbmcgc3ViamVjdCBsaW5lKScgJworCXRlc3RfY29uZmlnIGJyYW5jaC5yZWJ1aWxkLTEuZGVzY3JpcHRpb24gInRoaXMgaXMgYSByZWFsbHkgbG9uZyBmaXJzdCBsaW5lIGFuZCBpdCBpcyBvdmVyIDEwMCBjaGFyYWN0ZXJzIGxvbmcgd2hpY2ggaXMgdGhlIHRocmVzaG9sZCBmb3IgbG9uZyBzdWJqZWN0cworCitib2R5IiAmJgorCWdpdCBjaGVja291dCByZWJ1aWxkLTEgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tY292ZXItbGV0dGVyIC0tY292ZXItZnJvbS1kZXNjcmlwdGlvbiBhdXRvIG1hc3RlciA+YWN0dWFsICYmCisJZ3JlcCAiXlN1YmplY3Q6IFxbUEFUQ0ggMC8yXF0gXCpcKlwqIFNVQkpFQ1QgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5cKlwqXCogQkxVUkIgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwlncmVwICJedGhpcyBpcyBhIHJlYWxseSBsb25nIGZpcnN0IGxpbmUgYW5kIGl0IGlzIG92ZXIgMTAwIGNoYXJhY3RlcnMgbG9uZyB3aGljaCBpcyB0aGUgdGhyZXNob2xkIGZvciBsb25nIHN1YmplY3RzJCIgYWN0dWFsICYmCisJZ3JlcCAiXmJvZHkkIiBhY3R1YWwKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnY292ZXIgbGV0dGVyIHdpdGggY29tbWFuZC1saW5lIC0tY292ZXItZnJvbS1kZXNjcmlwdGlvbiBvdmVycmlkZXMgY29uZmlnJyAnCisJdGVzdF9jb25maWcgYnJhbmNoLnJlYnVpbGQtMS5kZXNjcmlwdGlvbiAiY29uZmlnIHN1YmplY3QKKworYm9keSIgJiYKKwl0ZXN0X2NvbmZpZyBmb3JtYXQuY292ZXJGcm9tRGVzY3JpcHRpb24gbm9uZSAmJgorCWdpdCBjaGVja291dCByZWJ1aWxkLTEgJiYKKwlnaXQgZm9ybWF0LXBhdGNoIC0tc3Rkb3V0IC0tY292ZXItbGV0dGVyIC0tY292ZXItZnJvbS1kZXNjcmlwdGlvbiBzdWJqZWN0IG1hc3RlciA+YWN0dWFsICYmCisJZ3JlcCAiXlN1YmplY3Q6IFxbUEFUQ0ggMC8yXF0gY29uZmlnIHN1YmplY3QkIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5cKlwqXCogQkxVUkIgSEVSRSBcKlwqXCokIiBhY3R1YWwgJiYKKwkhIGdyZXAgIl5jb25maWcgc3ViamVjdCQiIGFjdHVhbCAmJgorCWdyZXAgIl5ib2R5JCIgYWN0dWFsCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvdmVyIGxldHRlciB1c2luZyBicmFuY2ggZGVzY3JpcHRpb24gKDEpJyAnCiAJZ2l0IGNoZWNrb3V0IHJlYnVpbGQtMSAmJgogCXRlc3RfY29uZmlnIGJyYW5jaC5yZWJ1aWxkLTEuZGVzY3JpcHRpb24gaGVsbG8gJiYKZGlmZiAtLWdpdCBhL3QvdDQwMTUtZGlmZi13aGl0ZXNwYWNlLnNoIGIvdC90NDAxNS1kaWZmLXdoaXRlc3BhY2Uuc2gKaW5kZXggNmIwODdkZi4uZWFkYWY1NyAxMDA3NTUKLS0tIGEvdC90NDAxNS1kaWZmLXdoaXRlc3BhY2Uuc2gKKysrIGIvdC90NDAxNS1kaWZmLXdoaXRlc3BhY2Uuc2gKQEAgLTE2LDYgKzE2LDcgQEAKIAl9IHdoaWxlICgwKTsKIAlFT0YKIAlnaXQgdXBkYXRlLWluZGV4IC0tYWRkIHggJiYKKwliZWZvcmU9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgJChnaXQgaGFzaC1vYmplY3QgeCkpICYmCiAKIAljYXQgPDwtXEVPRiA+eCAmJgogCWRvCkBAIC0yNCwxMCArMjUsMTEgQEAKIAl9CiAJd2hpbGUgKDApOwogCUVPRgorCWFmdGVyPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHgpKSAmJgogCi0JY2F0IDw8LVxFT0YgPmV4cGVjdCAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgogCWRpZmYgLS1naXQgYS94IGIveAotCWluZGV4IGFkZjM5MzcuLjZlZGMxNzIgMTAwNjQ0CisJaW5kZXggJGJlZm9yZS4uJGFmdGVyIDEwMDY0NAogCS0tLSBhL3gKIAkrKysgYi94CiAJQEAgLTEsMyArMSw1IEBACkBAIC02MSw2ICs2Myw3IEBACiAJRU9GCiAKIAlnaXQgdXBkYXRlLWluZGV4IHggJiYKKwliZWZvcmU9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgJChnaXQgaGFzaC1vYmplY3QgeCkpICYmCiAKIAl0ciAiXyIgIiAiIDw8LVxFT0YgPnggJiYKIAlfCXdoaXRlc3BhY2UgYXQgYmVnaW5uaW5nCkBAIC03MCwxMCArNzMsMTEgQEAKIAl1bmNoYW5nZWQgbGluZQogCUNSIGF0IGVuZAogCUVPRgorCWFmdGVyPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHgpKSAmJgogCi0JdHIgIlFfIiAiXDAxNSAiIDw8LVxFT0YgPmV4cGVjdCAmJgorCXRyICJRXyIgIlwwMTUgIiA8PC1FT0YgPmV4cGVjdCAmJgogCWRpZmYgLS1naXQgYS94IGIveAotCWluZGV4IGQ5OWFmMjMuLjIyZDlmNzMgMTAwNjQ0CisJaW5kZXggJGJlZm9yZS4uJGFmdGVyIDEwMDY0NAogCS0tLSBhL3gKIAkrKysgYi94CiAJQEAgLTEsNiArMSw2IEBACkBAIC0xMDgsOSArMTEyLDkgQEAKIAlnaXQgZGlmZiAtdyAtLWlnbm9yZS1jci1hdC1lb2wgPm91dCAmJgogCXRlc3RfbXVzdF9iZV9lbXB0eSBvdXQgJiYKIAotCXRyICJRXyIgIlwwMTUgIiA8PC1cRU9GID5leHBlY3QgJiYKKwl0ciAiUV8iICJcMDE1ICIgPDwtRU9GID5leHBlY3QgJiYKIAlkaWZmIC0tZ2l0IGEveCBiL3gKLQlpbmRleCBkOTlhZjIzLi4yMmQ5ZjczIDEwMDY0NAorCWluZGV4ICRiZWZvcmUuLiRhZnRlciAxMDA2NDQKIAktLS0gYS94CiAJKysrIGIveAogCUBAIC0xLDYgKzEsNiBAQApAQCAtMTMyLDkgKzEzNiw5IEBACiAJZ2l0IGRpZmYgLWIgLS1pZ25vcmUtY3ItYXQtZW9sID5vdXQgJiYKIAl0ZXN0X2NtcCBleHBlY3Qgb3V0ICYmCiAKLQl0ciAiUV8iICJcMDE1ICIgPDwtXEVPRiA+ZXhwZWN0ICYmCisJdHIgIlFfIiAiXDAxNSAiIDw8LUVPRiA+ZXhwZWN0ICYmCiAJZGlmZiAtLWdpdCBhL3ggYi94Ci0JaW5kZXggZDk5YWYyMy4uMjJkOWY3MyAxMDA2NDQKKwlpbmRleCAkYmVmb3JlLi4kYWZ0ZXIgMTAwNjQ0CiAJLS0tIGEveAogCSsrKyBiL3gKIAlAQCAtMSw2ICsxLDYgQEAKQEAgLTE1NCw5ICsxNTgsOSBAQAogCWdpdCBkaWZmIC0taWdub3JlLXNwYWNlLWF0LWVvbCAtLWlnbm9yZS1jci1hdC1lb2wgPm91dCAmJgogCXRlc3RfY21wIGV4cGVjdCBvdXQgJiYKIAotCXRyICJRXyIgIlwwMTUgIiA8PC1cRU9GID5leHBlY3QgJiYKKwl0ciAiUV8iICJcMDE1ICIgPDwtRU9GID5leHBlY3QgJiYKIAlkaWZmIC0tZ2l0IGEveCBiL3gKLQlpbmRleF9kOTlhZjIzLi4yMmQ5ZjczIDEwMDY0NAorCWluZGV4XyRiZWZvcmUuLiRhZnRlciAxMDA2NDQKIAktLS0gYS94CiAJKysrIGIveAogCUBAIC0xLDYgKzEsNiBAQApAQCAtNzg2LDIzICs3OTAsMjUgQEAKIAl0ZXN0X211c3RfYmVfZW1wdHkgYWN0dWFsCiAnCiAKLWNhdCA8PEVPRiA+ZXhwZWN0Ci1kaWZmIC0tZ2l0IGEveCBiL3oKLXNpbWlsYXJpdHkgaW5kZXggTlVNJQotcmVuYW1lIGZyb20geAotcmVuYW1lIHRvIHoKLWluZGV4IDM4MGMzMmEuLmE5N2I3ODUgMTAwNjQ0Ci1FT0YKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3doaXRlc3BhY2Utb25seSBjaGFuZ2VzIHJlcG9ydGVkIGFjcm9zcyByZW5hbWVzJyAnCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWZvciBpIGluIDEgMiAzIDQgNSA2IDcgOCA5OyBkbyBlY2hvICIkaSRpJGkkaSRpJGkiOyBkb25lID54ICYmCiAJZ2l0IGFkZCB4ICYmCisJYmVmb3JlPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHgpKSAmJgogCWdpdCBjb21taXQgLW0gImJhc2UiICYmCiAJc2VkIC1lICI1cy9eLyAvIiB4ID56ICYmCiAJZ2l0IHJtIHggJiYKIAlnaXQgYWRkIHogJiYKKwlhZnRlcj0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkKGdpdCBoYXNoLW9iamVjdCB6KSkgJiYKIAlnaXQgZGlmZiAtdyAtTSAtLWNhY2hlZCB8CiAJc2VkIC1lICIvXnNpbWlsYXJpdHkgaW5kZXggL3MvWzAtOV1bMC05XSovTlVNLyIgPmFjdHVhbCAmJgorCWNhdCA8PC1FT0YgPmV4cGVjdCAmJgorCWRpZmYgLS1naXQgYS94IGIvegorCXNpbWlsYXJpdHkgaW5kZXggTlVNJQorCXJlbmFtZSBmcm9tIHgKKwlyZW5hbWUgdG8gegorCWluZGV4ICRiZWZvcmUuLiRhZnRlciAxMDA2NDQKKwlFT0YKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKQEAgLTg1OCwxMyArODY0LDE1IEBACiAJZ2l0IGNvbmZpZyBjb3JlLndoaXRlc3BhY2UgYmxhbmstYXQtZW9sICYmCiAJZ2l0IHJlc2V0IC0taGFyZCAmJgogCWVjaG8gInRlc3QiID54ICYmCisJYmVmb3JlPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHgpKSAmJgogCWdpdCBjb21taXQgLW0gImluaXRpYWwiIHggJiYKIAllY2hvICJ7TlROfSIgfCB0ciAiTlQiICJcblx0IiA+PnggJiYKKwlhZnRlcj0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkKGdpdCBoYXNoLW9iamVjdCB4KSkgJiYKIAlnaXQgZGlmZiAtLWNvbG9yIHwgdGVzdF9kZWNvZGVfY29sb3IgPmN1cnJlbnQgJiYKIAotCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCiAJPEJPTEQ+ZGlmZiAtLWdpdCBhL3ggYi94PFJFU0VUPgotCTxCT0xEPmluZGV4IDlkYWVhZmIuLjI4NzRiOTEgMTAwNjQ0PFJFU0VUPgorCTxCT0xEPmluZGV4ICRiZWZvcmUuLiRhZnRlciAxMDA2NDQ8UkVTRVQ+CiAJPEJPTEQ+LS0tIGEveDxSRVNFVD4KIAk8Qk9MRD4rKysgYi94PFJFU0VUPgogCTxDWUFOPkBAIC0xICsxLDQgQEA8UkVTRVQ+CkBAIC04ODMsMTkgKzg5MSwyMSBAQAogCQllY2hvICIwLiBibGFuay1hdC1lb2wgIiAmJgogCQllY2hvICIxLiBibGFuay1hdC1lb2wgIgogCX0gPnggJiYKKwliZWZvcmU9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgJChnaXQgaGFzaC1vYmplY3QgeCkpICYmCiAJZ2l0IGNvbW1pdCAtYSAtLWFsbG93LWVtcHR5IC1tIHByZWltYWdlICYmCiAJewogCQllY2hvICIwLiBibGFuay1hdC1lb2wgIiAmJgogCQllY2hvICIxLiBzdGlsbC1ibGFuay1hdC1lb2wgIiAmJgogCQllY2hvICIyLiBhbmQgYSBuZXcgbGluZSAiCiAJfSA+eCAmJgorCWFmdGVyPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHgpKSAmJgogCiAJZ2l0IGRpZmYgLS1jb2xvciB8CiAJdGVzdF9kZWNvZGVfY29sb3IgPmN1cnJlbnQgJiYKIAotCWNhdCA+ZXhwZWN0ZWQgPDwtXEVPRiAmJgorCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCiAJPEJPTEQ+ZGlmZiAtLWdpdCBhL3ggYi94PFJFU0VUPgotCTxCT0xEPmluZGV4IGQwMjMzYTIuLjcwMDg4NmUgMTAwNjQ0PFJFU0VUPgorCTxCT0xEPmluZGV4ICRiZWZvcmUuLiRhZnRlciAxMDA2NDQ8UkVTRVQ+CiAJPEJPTEQ+LS0tIGEveDxSRVNFVD4KIAk8Qk9MRD4rKysgYi94PFJFU0VUPgogCTxDWUFOPkBAIC0xLDIgKzEsMyBAQDxSRVNFVD4KQEAgLTkxNSwxNiArOTI1LDE4IEBACiAJCWVjaG8gIjAuIGJsYW5rLWF0LWVvbCAiICYmCiAJCWVjaG8gIjEuIGJsYW5rLWF0LWVvbCAiCiAJfSA+eCAmJgorCWJlZm9yZT0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkKGdpdCBoYXNoLW9iamVjdCB4KSkgJiYKIAlnaXQgY29tbWl0IC1hIC0tYWxsb3ctZW1wdHkgLW0gcHJlaW1hZ2UgJiYKIAl7CiAJCWVjaG8gIjAuIGJsYW5rLWF0LWVvbCAiICYmCiAJCWVjaG8gIjEuIHN0aWxsLWJsYW5rLWF0LWVvbCAiICYmCiAJCWVjaG8gIjIuIGFuZCBhIG5ldyBsaW5lICIKIAl9ID54ICYmCisJYWZ0ZXI9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgJChnaXQgaGFzaC1vYmplY3QgeCkpICYmCiAKLQljYXQgPmV4cGVjdC5kZWZhdWx0LW9sZCA8PC1cRU9GICYmCisJY2F0ID5leHBlY3QuZGVmYXVsdC1vbGQgPDwtRU9GICYmCiAJPEJPTEQ+ZGlmZiAtLWdpdCBhL3ggYi94PFJFU0VUPgotCTxCT0xEPmluZGV4IGQwMjMzYTIuLjcwMDg4NmUgMTAwNjQ0PFJFU0VUPgorCTxCT0xEPmluZGV4ICRiZWZvcmUuLiRhZnRlciAxMDA2NDQ8UkVTRVQ+CiAJPEJPTEQ+LS0tIGEveDxSRVNFVD4KIAk8Qk9MRD4rKysgYi94PFJFU0VUPgogCTxDWUFOPkBAIC0xLDIgKzEsMyBAQDxSRVNFVD4KQEAgLTkzNCw5ICs5NDYsOSBAQAogCTxHUkVFTj4rPFJFU0VUPjxHUkVFTj4yLiBhbmQgYSBuZXcgbGluZTxSRVNFVD48QkxVRT4gPFJFU0VUPgogCUVPRgogCi0JY2F0ID5leHBlY3QuYWxsIDw8LVxFT0YgJiYKKwljYXQgPmV4cGVjdC5hbGwgPDwtRU9GICYmCiAJPEJPTEQ+ZGlmZiAtLWdpdCBhL3ggYi94PFJFU0VUPgotCTxCT0xEPmluZGV4IGQwMjMzYTIuLjcwMDg4NmUgMTAwNjQ0PFJFU0VUPgorCTxCT0xEPmluZGV4ICRiZWZvcmUuLiRhZnRlciAxMDA2NDQ8UkVTRVQ+CiAJPEJPTEQ+LS0tIGEveDxSRVNFVD4KIAk8Qk9MRD4rKysgYi94PFJFU0VUPgogCTxDWUFOPkBAIC0xLDIgKzEsMyBAQDxSRVNFVD4KQEAgLTk0Niw5ICs5NTgsOSBAQAogCTxHUkVFTj4rPFJFU0VUPjxHUkVFTj4yLiBhbmQgYSBuZXcgbGluZTxSRVNFVD48QkxVRT4gPFJFU0VUPgogCUVPRgogCi0JY2F0ID5leHBlY3Qubm9uZSA8PC1cRU9GCisJY2F0ID5leHBlY3Qubm9uZSA8PC1FT0YKIAk8Qk9MRD5kaWZmIC0tZ2l0IGEveCBiL3g8UkVTRVQ+Ci0JPEJPTEQ+aW5kZXggZDAyMzNhMi4uNzAwODg2ZSAxMDA2NDQ8UkVTRVQ+CisJPEJPTEQ+aW5kZXggJGJlZm9yZS4uJGFmdGVyIDEwMDY0NDxSRVNFVD4KIAk8Qk9MRD4tLS0gYS94PFJFU0VUPgogCTxCT0xEPisrKyBiL3g8UkVTRVQ+CiAJPENZQU4+QEAgLTEsMiArMSwzIEBAPFJFU0VUPgpAQCAtMTAyMiwxNCArMTAzNCwxNSBAQAogCUVPRgogCWdpdCBhZGQgdGVzdC5jICYmCiAJZ2l0IGNvbW1pdCAtbSAiYWRkIG1haW4gZnVuY3Rpb24iICYmCisJZmlsZT0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEOnRlc3QuYykgJiYKIAlnaXQgbXYgdGVzdC5jIG1haW4uYyAmJgogCXRlc3RfY29uZmlnIGNvbG9yLmRpZmYub2xkTW92ZWQgIm5vcm1hbCByZWQiICYmCiAJdGVzdF9jb25maWcgY29sb3IuZGlmZi5uZXdNb3ZlZCAibm9ybWFsIGdyZWVuIiAmJgogCWdpdCBkaWZmIEhFQUQgLS1jb2xvci1tb3ZlZD16ZWJyYSAtLWNvbG9yIC0tbm8tcmVuYW1lcyB8IHRlc3RfZGVjb2RlX2NvbG9yID5hY3R1YWwgJiYKLQljYXQgPmV4cGVjdGVkIDw8LVxFT0YgJiYKKwljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgogCTxCT0xEPmRpZmYgLS1naXQgYS9tYWluLmMgYi9tYWluLmM8UkVTRVQ+CiAJPEJPTEQ+bmV3IGZpbGUgbW9kZSAxMDA2NDQ8UkVTRVQ+Ci0JPEJPTEQ+aW5kZXggMDAwMDAwMC4uYTk4NmM1NzxSRVNFVD4KKwk8Qk9MRD5pbmRleCAwMDAwMDAwLi4kZmlsZTxSRVNFVD4KIAk8Qk9MRD4tLS0gL2Rldi9udWxsPFJFU0VUPgogCTxCT0xEPisrKyBiL21haW4uYzxSRVNFVD4KIAk8Q1lBTj5AQCAtMCwwICsxLDUgQEA8UkVTRVQ+CkBAIC0xMDQwLDcgKzEwNTMsNyBAQAogCTxCR1JFRU4+KzxSRVNFVD48QkdSRUVOPn08UkVTRVQ+CiAJPEJPTEQ+ZGlmZiAtLWdpdCBhL3Rlc3QuYyBiL3Rlc3QuYzxSRVNFVD4KIAk8Qk9MRD5kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQ8UkVTRVQ+Ci0JPEJPTEQ+aW5kZXggYTk4NmM1Ny4uMDAwMDAwMDxSRVNFVD4KKwk8Qk9MRD5pbmRleCAkZmlsZS4uMDAwMDAwMDxSRVNFVD4KIAk8Qk9MRD4tLS0gYS90ZXN0LmM8UkVTRVQ+CiAJPEJPTEQ+KysrIC9kZXYvbnVsbDxSRVNFVD4KIAk8Q1lBTj5AQCAtMSw1ICswLDAgQEA8UkVTRVQ+CkBAIC0xMDk0LDYgKzExMDcsOCBAQAogCUVPRgogCWdpdCBhZGQgbWFpbi5jIHRlc3QuYyAmJgogCWdpdCBjb21taXQgLW0gImFkZCBtYWluIGFuZCB0ZXN0IGZpbGUiICYmCisJYmVmb3JlX21haW49JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRDptYWluLmMpICYmCisJYmVmb3JlX3Rlc3Q9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRDp0ZXN0LmMpICYmCiAJY2F0IDw8LVxFT0YgPm1haW4uYyAmJgogCQkjaW5jbHVkZTxzdGRpby5oPgogCQlpbnQgc3R1ZmYoKQpAQCAtMTEyNiwxMCArMTE0MSwxMiBAQAogCQkJYmFyKCk7CiAJCX0KIAlFT0YKKwlhZnRlcl9tYWluPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IG1haW4uYykpICYmCisJYWZ0ZXJfdGVzdD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkKGdpdCBoYXNoLW9iamVjdCB0ZXN0LmMpKSAmJgogCWdpdCBkaWZmIEhFQUQgLS1uby1yZW5hbWVzIC0tY29sb3ItbW92ZWQ9emVicmEgLS1jb2xvciB8IHRlc3RfZGVjb2RlX2NvbG9yID5hY3R1YWwgJiYKLQljYXQgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwljYXQgPDwtRU9GID5leHBlY3RlZCAmJgogCTxCT0xEPmRpZmYgLS1naXQgYS9tYWluLmMgYi9tYWluLmM8UkVTRVQ+Ci0JPEJPTEQ+aW5kZXggMjdhNjE5Yy4uN2NmOTMzNiAxMDA2NDQ8UkVTRVQ+CisJPEJPTEQ+aW5kZXggJGJlZm9yZV9tYWluLi4kYWZ0ZXJfbWFpbiAxMDA2NDQ8UkVTRVQ+CiAJPEJPTEQ+LS0tIGEvbWFpbi5jPFJFU0VUPgogCTxCT0xEPisrKyBiL21haW4uYzxSRVNFVD4KIAk8Q1lBTj5AQCAtNSwxMyArNSw2IEBAPFJFU0VUPiA8UkVTRVQ+cHJpbnRmKCJIZWxsbyAiKTs8UkVTRVQ+CkBAIC0xMTQ3LDcgKzExNjQsNyBAQAogCSB7PFJFU0VUPgogCSBmb28oKTs8UkVTRVQ+CiAJPEJPTEQ+ZGlmZiAtLWdpdCBhL3Rlc3QuYyBiL3Rlc3QuYzxSRVNFVD4KLQk8Qk9MRD5pbmRleCAxZGMxZDg1Li4yYmVkZWM5IDEwMDY0NDxSRVNFVD4KKwk8Qk9MRD5pbmRleCAkYmVmb3JlX3Rlc3QuLiRhZnRlcl90ZXN0IDEwMDY0NDxSRVNFVD4KIAk8Qk9MRD4tLS0gYS90ZXN0LmM8UkVTRVQ+CiAJPEJPTEQ+KysrIGIvdGVzdC5jPFJFU0VUPgogCTxDWUFOPkBAIC00LDYgKzQsMTMgQEA8UkVTRVQ+IDxSRVNFVD5pbnQgYmFyKCk8UkVTRVQ+CkBAIC0xMTc2LDkgKzExOTMsOSBAQAogCXRlc3RfY29uZmlnIGNvbG9yLmRpZmYubmV3TW92ZWRBbHRlcm5hdGl2ZSAieWVsbG93IiAmJgogCSMgbmVlZHMgcHJldmlvdXMgdGVzdCBhcyBzZXR1cAogCWdpdCBkaWZmIEhFQUQgLS1uby1yZW5hbWVzIC0tY29sb3ItbW92ZWQ9cGxhaW4gLS1jb2xvciB8IHRlc3RfZGVjb2RlX2NvbG9yID5hY3R1YWwgJiYKLQljYXQgPDwtXEVPRiA+ZXhwZWN0ZWQgJiYKKwljYXQgPDwtRU9GID5leHBlY3RlZCAmJgogCTxCT0xEPmRpZmYgLS1naXQgYS9tYWluLmMgYi9tYWluLmM8UkVTRVQ+Ci0JPEJPTEQ+aW5kZXggMjdhNjE5Yy4uN2NmOTMzNiAxMDA2NDQ8UkVTRVQ+CisJPEJPTEQ+aW5kZXggJGJlZm9yZV9tYWluLi4kYWZ0ZXJfbWFpbiAxMDA2NDQ8UkVTRVQ+CiAJPEJPTEQ+LS0tIGEvbWFpbi5jPFJFU0VUPgogCTxCT0xEPisrKyBiL21haW4uYzxSRVNFVD4KIAk8Q1lBTj5AQCAtNSwxMyArNSw2IEBAPFJFU0VUPiA8UkVTRVQ+cHJpbnRmKCJIZWxsbyAiKTs8UkVTRVQ+CkBAIC0xMTk2LDcgKzEyMTMsNyBAQAogCSB7PFJFU0VUPgogCSBmb28oKTs8UkVTRVQ+CiAJPEJPTEQ+ZGlmZiAtLWdpdCBhL3Rlc3QuYyBiL3Rlc3QuYzxSRVNFVD4KLQk8Qk9MRD5pbmRleCAxZGMxZDg1Li4yYmVkZWM5IDEwMDY0NDxSRVNFVD4KKwk8Qk9MRD5pbmRleCAkYmVmb3JlX3Rlc3QuLiRhZnRlcl90ZXN0IDEwMDY0NDxSRVNFVD4KIAk8Qk9MRD4tLS0gYS90ZXN0LmM8UkVTRVQ+CiAJPEJPTEQ+KysrIGIvdGVzdC5jPFJFU0VUPgogCTxDWUFOPkBAIC00LDYgKzQsMTMgQEA8UkVTRVQ+IDxSRVNFVD5pbnQgYmFyKCk8UkVTRVQ+CmRpZmYgLS1naXQgYS90L3Q0MDE4LWRpZmYtZnVuY25hbWUuc2ggYi90L3Q0MDE4LWRpZmYtZnVuY25hbWUuc2gKaW5kZXggNmY1ZWYwMC4uYzBmNDgzOSAxMDA3NTUKLS0tIGEvdC90NDAxOC1kaWZmLWZ1bmNuYW1lLnNoCisrKyBiL3QvdDQwMTgtZGlmZi1mdW5jbmFtZS5zaApAQCAtMzIsNiArMzIsNyBAQAogCWNzaGFycAogCWNzcwogCWR0cworCWVsaXhpcgogCWZvcnRyYW4KIAlmb3VudGFpbgogCWdvbGFuZwpkaWZmIC0tZ2l0IGEvdC90NDAxOC9lbGl4aXItZG8tbm90LXBpY2stZW5kIGIvdC90NDAxOC9lbGl4aXItZG8tbm90LXBpY2stZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZTA4YmEKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MDE4L2VsaXhpci1kby1ub3QtcGljay1lbmQKQEAgLTAsMCArMSw1IEBACitkZWZtb2R1bGUgUklHSFQgZG8KK2VuZAorIworIworIyBDaGFuZ2VNZTsgZG8gbm90IHBpY2sgdXAgJ2VuZCcgbGluZQpkaWZmIC0tZ2l0IGEvdC90NDAxOC9lbGl4aXItZXgtdW5pdC10ZXN0IGIvdC90NDAxOC9lbGl4aXItZXgtdW5pdC10ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1NjBhMmIKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MDE4L2VsaXhpci1leC11bml0LXRlc3QKQEAgLTAsMCArMSw2IEBACitkZWZtb2R1bGUgVGVzdCBkbworICB0ZXN0ICJSSUdIVCIgZG8KKyAgICBhc3NlcnQgdHJ1ZSA9PSB0cnVlCisgICAgYXNzZXJ0IENoYW5nZU1lCisgIGVuZAorZW5kCmRpZmYgLS1naXQgYS90L3Q0MDE4L2VsaXhpci1mdW5jdGlvbiBiL3QvdDQwMTgvZWxpeGlyLWZ1bmN0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NTJmNDkKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MDE4L2VsaXhpci1mdW5jdGlvbgpAQCAtMCwwICsxLDUgQEAKK2RlZiBmdW5jdGlvbihSSUdIVCwgYXJnKSBkbworICAjIGNvbW1lbnQKKyAgIyBjb21tZW50CisgIENoYW5nZU1lCitlbmQKZGlmZiAtLWdpdCBhL3QvdDQwMTgvZWxpeGlyLW1hY3JvIGIvdC90NDAxOC9lbGl4aXItbWFjcm8KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5MjVlOQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMTgvZWxpeGlyLW1hY3JvCkBAIC0wLDAgKzEsNSBAQAorZGVmbWFjcm8gZm9vKFJJR0hUKSBkbworICAjIENvZGUKKyAgIyBDb2RlCisgIENoYW5nZU1lCitlbmQKZGlmZiAtLWdpdCBhL3QvdDQwMTgvZWxpeGlyLW1vZHVsZSBiL3QvdDQwMTgvZWxpeGlyLW1vZHVsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWE0ZTdhCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDAxOC9lbGl4aXItbW9kdWxlCkBAIC0wLDAgKzEsOSBAQAorZGVmbW9kdWxlIFJJR0hUIGRvCisgIEBtb2R1bGVkb2MgIiIiCisgIEZvbyBiYXIKKyAgIiIiCisKKyAgZGVmIENoYW5nZU1lKGEpIHdoZXJlIGlzX21hcChhKSBkbworICAgIGEKKyAgZW5kCitlbmQKZGlmZiAtLWdpdCBhL3QvdDQwMTgvZWxpeGlyLW1vZHVsZS1mdW5jIGIvdC90NDAxOC9lbGl4aXItbW9kdWxlLWZ1bmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk5MTBkMAotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMTgvZWxpeGlyLW1vZHVsZS1mdW5jCkBAIC0wLDAgKzEsOCBAQAorZGVmbW9kdWxlIEZvbyBkbworICBkZWYgZnVuKFJJR0hUKSBkbworICAgICAjIENvZGUKKyAgICAgIyBDb2RlCisgICAgICMgQ29kZQorICAgICBDaGFuZ2VNZQorICBlbmQKK2VuZApkaWZmIC0tZ2l0IGEvdC90NDAxOC9lbGl4aXItbmVzdGVkLW1vZHVsZSBiL3QvdDQwMTgvZWxpeGlyLW5lc3RlZC1tb2R1bGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcxZWJjNQotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMTgvZWxpeGlyLW5lc3RlZC1tb2R1bGUKQEAgLTAsMCArMSw5IEBACitkZWZtb2R1bGUgTXlBcHAuUklHSFQgZG8KKyAgQG1vZHVsZWRvYyAiIiIKKyAgRm9vIGJhcgorICAiIiIKKworICBkZWYgQ2hhbmdlTWUoYSkgd2hlcmUgaXNfbWFwKGEpIGRvCisgICAgYQorICBlbmQKK2VuZApkaWZmIC0tZ2l0IGEvdC90NDAxOC9lbGl4aXItcHJpdmF0ZS1mdW5jdGlvbiBiL3QvdDQwMTgvZWxpeGlyLXByaXZhdGUtZnVuY3Rpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFhYmUzMwotLS0gL2Rldi9udWxsCisrKyBiL3QvdDQwMTgvZWxpeGlyLXByaXZhdGUtZnVuY3Rpb24KQEAgLTAsMCArMSw1IEBACitkZWZwIGZ1bmN0aW9uKFJJR0hULCBhcmcpIGRvCisgICMgY29tbWVudAorICAjIGNvbW1lbnQKKyAgQ2hhbmdlTWUKK2VuZApkaWZmIC0tZ2l0IGEvdC90NDAxOC9lbGl4aXItcHJvdG9jb2wgYi90L3Q0MDE4L2VsaXhpci1wcm90b2NvbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDkxNzM2Ci0tLSAvZGV2L251bGwKKysrIGIvdC90NDAxOC9lbGl4aXItcHJvdG9jb2wKQEAgLTAsMCArMSw2IEBACitkZWZwcm90b2NvbCBSSUdIVCBkbworICBAZG9jICIiIgorICBDYWxjdWxhdGVzIHRoZSBzaXplIChhbmQgbm90IHRoZSBsZW5ndGghKSBvZiBhIGRhdGEgc3RydWN0dXJlCisgICIiIgorICBkZWYgc2l6ZShkYXRhLCBDaGFuZ2VNZSkKK2VuZApkaWZmIC0tZ2l0IGEvdC90NDAxOC9lbGl4aXItcHJvdG9jb2wtaW1wbGVtZW50YXRpb24gYi90L3Q0MDE4L2VsaXhpci1wcm90b2NvbC1pbXBsZW1lbnRhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTIzNGJiCi0tLSAvZGV2L251bGwKKysrIGIvdC90NDAxOC9lbGl4aXItcHJvdG9jb2wtaW1wbGVtZW50YXRpb24KQEAgLTAsMCArMSw1IEBACitkZWZpbXBsIFJJR0hUIGRvCisgICMgRG9jcworICAjIERvY3MKKyAgZGVmIGZvbyhDaGFuZ2VNZSksIGRvOiA6b2sKK2VuZApkaWZmIC0tZ2l0IGEvdC90NDAyNy1kaWZmLXN1Ym1vZHVsZS5zaCBiL3QvdDQwMjctZGlmZi1zdWJtb2R1bGUuc2gKaW5kZXggOWFhOGUyYi4uZTI5ZGVhZiAxMDA3NTUKLS0tIGEvdC90NDAyNy1kaWZmLXN1Ym1vZHVsZS5zaAorKysgYi90L3Q0MDI3LWRpZmYtc3VibW9kdWxlLnNoCkBAIC02LDYgKzYsNyBAQAogLiAiJFRFU1RfRElSRUNUT1JZIi9kaWZmLWxpYi5zaAogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIHNldHVwICcKKwl0ZXN0X29pZF9pbml0ICYmCiAJdGVzdF90aWNrICYmCiAJdGVzdF9jcmVhdGVfcmVwbyBzdWIgJiYKIAkoCkBAIC0zNiw3ICszNyw4IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2dpdCBkaWZmIC0tcmF3IEhFQUQnICcKLQlnaXQgZGlmZiAtLXJhdyAtLWFiYnJldj00MCBIRUFEID5hY3R1YWwgJiYKKwloZXhzej0kKHRlc3Rfb2lkIGhleHN6KSAmJgorCWdpdCBkaWZmIC0tcmF3IC0tYWJicmV2PSRoZXhzeiBIRUFEID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKQEAgLTI0NSwyMyArMjQ3LDIxIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbmZsaWN0ZWQgc3VibW9kdWxlIHNldHVwJyAnCi0KLQkjIDM5IGVmcwotCWM9ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmICYmCisJYz0kKHRlc3Rfb2lkIGZmXzEpICYmCiAJKAogCQllY2hvICIwMDAwMDAgJFpFUk9fT0lEIDAJc3ViIiAmJgogCQllY2hvICIxNjAwMDAgMSRjIDEJc3ViIiAmJgogCQllY2hvICIxNjAwMDAgMiRjIDIJc3ViIiAmJgogCQllY2hvICIxNjAwMDAgMyRjIDMJc3ViIgogCSkgfCBnaXQgdXBkYXRlLWluZGV4IC0taW5kZXgtaW5mbyAmJgotCWVjaG8gPmV4cGVjdC5ub3N1YiAnXCcnZGlmZiAtLWNjIHN1YgorCWVjaG8gPmV4cGVjdC5ub3N1YiAiZGlmZiAtLWNjIHN1YgogaW5kZXggMmZmZmZmZiwzZmZmZmZmLi4wMDAwMDAwCiAtLS0gYS9zdWIKICsrKyBiL3N1YgogQEBAIC0xLDEgLTEsMSArMSwxIEBAQAotLSBTdWJwcm9qZWN0IGNvbW1pdCAyZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmCi0gLVN1YnByb2plY3QgY29tbWl0IDNmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmYKLSsrU3VicHJvamVjdCBjb21taXQgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCdcJycgJiYKKy0gU3VicHJvamVjdCBjb21taXQgMiRjCisgLVN1YnByb2plY3QgY29tbWl0IDMkYworKytTdWJwcm9qZWN0IGNvbW1pdCAkWkVST19PSUQiICYmCiAKIAloaD0kKGdpdCByZXYtcGFyc2UgSEVBRCkgJiYKIAlzZWQgLWUgInMvJFpFUk9fT0lELyRoaC8iIGV4cGVjdC5ub3N1YiA+ZXhwZWN0LndpdGhzdWIKZGlmZiAtLWdpdCBhL3QvdDQwMzQtZGlmZi13b3Jkcy5zaCBiL3QvdDQwMzQtZGlmZi13b3Jkcy5zaAppbmRleCA5YTkzYzJhLi5mYjE0NWFhIDEwMDc1NQotLS0gYS90L3Q0MDM0LWRpZmYtd29yZHMuc2gKKysrIGIvdC90NDAzNC1kaWZmLXdvcmRzLnNoCkBAIC0xOSw5ICsxOSwxMSBAQAogCiAJYWVmZiA9IGFlZmYgKiAoIGFhYSApCiBFT0YKLWNhdCA+ZXhwZWN0LmxldHRlci1ydW5zLWFyZS13b3JkcyA8PC1cRU9GCitwcmU9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgJChnaXQgaGFzaC1vYmplY3QgcHJlLnNpbXBsZSkpCitwb3N0PSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHBvc3Quc2ltcGxlKSkKK2NhdCA+ZXhwZWN0LmxldHRlci1ydW5zLWFyZS13b3JkcyA8PC1FT0YKIAk8Qk9MRD5kaWZmIC0tZ2l0IGEvcHJlIGIvcG9zdDxSRVNFVD4KLQk8Qk9MRD5pbmRleCAzMzBiMDRmLi41ZWQ4ZWZmIDEwMDY0NDxSRVNFVD4KKwk8Qk9MRD5pbmRleCAkcHJlLi4kcG9zdCAxMDA2NDQ8UkVTRVQ+CiAJPEJPTEQ+LS0tIGEvcHJlPFJFU0VUPgogCTxCT0xEPisrKyBiL3Bvc3Q8UkVTRVQ+CiAJPENZQU4+QEAgLTEsMyArMSw3IEBAPFJFU0VUPgpAQCAtMzMsOSArMzUsOSBAQAogCiAJPEdSRUVOPmFlZmYgPSBhZWZmICogKCBhYWE8UkVTRVQ+ICkKIEVPRgotY2F0ID5leHBlY3Qubm9uLXdoaXRlc3BhY2UtaXMtd29yZCA8PC1cRU9GCitjYXQgPmV4cGVjdC5ub24td2hpdGVzcGFjZS1pcy13b3JkIDw8LUVPRgogCTxCT0xEPmRpZmYgLS1naXQgYS9wcmUgYi9wb3N0PFJFU0VUPgotCTxCT0xEPmluZGV4IDMzMGIwNGYuLjVlZDhlZmYgMTAwNjQ0PFJFU0VUPgorCTxCT0xEPmluZGV4ICRwcmUuLiRwb3N0IDEwMDY0NDxSRVNFVD4KIAk8Qk9MRD4tLS0gYS9wcmU8UkVTRVQ+CiAJPEJPTEQ+KysrIGIvcG9zdDxSRVNFVD4KIAk8Q1lBTj5AQCAtMSwzICsxLDcgQEA8UkVTRVQ+CkBAIC00OSw5ICs1MSwxMiBAQAogRU9GCiAKIHdvcmRfZGlmZiAoKSB7CisJcHJlPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHByZSkpICYmCisJcG9zdD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkKGdpdCBoYXNoLW9iamVjdCBwb3N0KSkgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgZGlmZiAtLW5vLWluZGV4ICIkQCIgcHJlIHBvc3QgPm91dHB1dCAmJgogCXRlc3RfZGVjb2RlX2NvbG9yIDxvdXRwdXQgPm91dHB1dC5kZWNyeXB0ZWQgJiYKLQl0ZXN0X2NtcCBleHBlY3Qgb3V0cHV0LmRlY3J5cHRlZAorCXNlZCAtZSAiMnMvaW5kZXggW14gXSovaW5kZXggJHByZS4uJHBvc3QvIiBleHBlY3QgPmV4cGVjdGVkCisJdGVzdF9jbXAgZXhwZWN0ZWQgb3V0cHV0LmRlY3J5cHRlZAogfQogCiB0ZXN0X2xhbmd1YWdlX2RyaXZlciAoKSB7CkBAIC03Nyw5ICs4Miw5IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dvcmQgZGlmZiB3aXRoIHJ1bnMgb2Ygd2hpdGVzcGFjZScgJwotCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwljYXQgPmV4cGVjdCA8PC1FT0YgJiYKIAkJPEJPTEQ+ZGlmZiAtLWdpdCBhL3ByZSBiL3Bvc3Q8UkVTRVQ+Ci0JCTxCT0xEPmluZGV4IDMzMGIwNGYuLjVlZDhlZmYgMTAwNjQ0PFJFU0VUPgorCQk8Qk9MRD5pbmRleCAkcHJlLi4kcG9zdCAxMDA2NDQ8UkVTRVQ+CiAJCTxCT0xEPi0tLSBhL3ByZTxSRVNFVD4KIAkJPEJPTEQ+KysrIGIvcG9zdDxSRVNFVD4KIAkJPENZQU4+QEAgLTEsMyArMSw3IEBAPFJFU0VUPgpAQCAtOTcsOSArMTAyLDkgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS13b3JkLWRpZmY9cG9yY2VsYWluJyAnCi0Jc2VkICdzLyMuKiQvLycgPmV4cGVjdCA8PC1cRU9GICYmCisJc2VkICdzLyMuKiQvLycgPmV4cGVjdCA8PC1FT0YgJiYKIAkJZGlmZiAtLWdpdCBhL3ByZSBiL3Bvc3QKLQkJaW5kZXggMzMwYjA0Zi4uNWVkOGVmZiAxMDA2NDQKKwkJaW5kZXggJHByZS4uJHBvc3QgMTAwNjQ0CiAJCS0tLSBhL3ByZQogCQkrKysgYi9wb3N0CiAJCUBAIC0xLDMgKzEsNyBAQApAQCAtMTIxLDkgKzEyNiw5IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0td29yZC1kaWZmPXBsYWluJyAnCi0JY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgogCQlkaWZmIC0tZ2l0IGEvcHJlIGIvcG9zdAotCQlpbmRleCAzMzBiMDRmLi41ZWQ4ZWZmIDEwMDY0NAorCQlpbmRleCAkcHJlLi4kcG9zdCAxMDA2NDQKIAkJLS0tIGEvcHJlCiAJCSsrKyBiL3Bvc3QKIAkJQEAgLTEsMyArMSw3IEBACkBAIC0xNDAsOSArMTQ1LDkgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS13b3JkLWRpZmY9cGxhaW4gLS1jb2xvcicgJwotCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwljYXQgPmV4cGVjdCA8PC1FT0YgJiYKIAkJPEJPTEQ+ZGlmZiAtLWdpdCBhL3ByZSBiL3Bvc3Q8UkVTRVQ+Ci0JCTxCT0xEPmluZGV4IDMzMGIwNGYuLjVlZDhlZmYgMTAwNjQ0PFJFU0VUPgorCQk8Qk9MRD5pbmRleCAkcHJlLi4kcG9zdCAxMDA2NDQ8UkVTRVQ+CiAJCTxCT0xEPi0tLSBhL3ByZTxSRVNFVD4KIAkJPEJPTEQ+KysrIGIvcG9zdDxSRVNFVD4KIAkJPENZQU4+QEAgLTEsMyArMSw3IEBAPFJFU0VUPgpAQCAtMTU4LDkgKzE2Myw5IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dvcmQgZGlmZiB3aXRob3V0IGNvbnRleHQnICcKLQljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJY2F0ID5leHBlY3QgPDwtRU9GICYmCiAJCTxCT0xEPmRpZmYgLS1naXQgYS9wcmUgYi9wb3N0PFJFU0VUPgotCQk8Qk9MRD5pbmRleCAzMzBiMDRmLi41ZWQ4ZWZmIDEwMDY0NDxSRVNFVD4KKwkJPEJPTEQ+aW5kZXggJHByZS4uJHBvc3QgMTAwNjQ0PFJFU0VUPgogCQk8Qk9MRD4tLS0gYS9wcmU8UkVTRVQ+CiAJCTxCT0xEPisrKyBiL3Bvc3Q8UkVTRVQ+CiAJCTxDWUFOPkBAIC0xICsxIEBAPFJFU0VUPgpAQCAtMjA3LDkgKzIxMiw5IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NvbW1hbmQtbGluZSBvdmVycmlkZXMgY29uZmlnOiAtLXdvcmQtZGlmZi1yZWdleCcgJwotCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwljYXQgPmV4cGVjdCA8PC1FT0YgJiYKIAkJPEJPTEQ+ZGlmZiAtLWdpdCBhL3ByZSBiL3Bvc3Q8UkVTRVQ+Ci0JCTxCT0xEPmluZGV4IDMzMGIwNGYuLjVlZDhlZmYgMTAwNjQ0PFJFU0VUPgorCQk8Qk9MRD5pbmRleCAkcHJlLi4kcG9zdCAxMDA2NDQ8UkVTRVQ+CiAJCTxCT0xEPi0tLSBhL3ByZTxSRVNFVD4KIAkJPEJPTEQ+KysrIGIvcG9zdDxSRVNFVD4KIAkJPENZQU4+QEAgLTEsMyArMSw3IEBAPFJFU0VUPgpAQCAtMjM0LDkgKzIzOSw5IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3VzZSBjb25maWd1cmVkIHJlZ2V4JyAnCi0JY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgogCQk8Qk9MRD5kaWZmIC0tZ2l0IGEvcHJlIGIvcG9zdDxSRVNFVD4KLQkJPEJPTEQ+aW5kZXggMzMwYjA0Zi4uNWVkOGVmZiAxMDA2NDQ8UkVTRVQ+CisJCTxCT0xEPmluZGV4ICRwcmUuLiRwb3N0IDEwMDY0NDxSRVNFVD4KIAkJPEJPTEQ+LS0tIGEvcHJlPFJFU0VUPgogCQk8Qk9MRD4rKysgYi9wb3N0PFJFU0VUPgogCQk8Q1lBTj5AQCAtMSwzICsxLDcgQEA8UkVTRVQ+CkBAIC0yNTQsOSArMjU5LDExIEBACiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd0ZXN0IHBhcnNpbmcgd29yZHMgZm9yIG5ld2xpbmUnICcKIAllY2hvICJhYWEgKGFhYSkiID5wcmUgJiYKIAllY2hvICJhYWEgKGFhYSkgYWFhIiA+cG9zdCAmJgotCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwlwcmU9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgJChnaXQgaGFzaC1vYmplY3QgcHJlKSkgJiYKKwlwb3N0PSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHBvc3QpKSAmJgorCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgogCQk8Qk9MRD5kaWZmIC0tZ2l0IGEvcHJlIGIvcG9zdDxSRVNFVD4KLQkJPEJPTEQ+aW5kZXggYzI5NDUzYi4uYmUyMmYzNyAxMDA2NDQ8UkVTRVQ+CisJCTxCT0xEPmluZGV4ICRwcmUuLiRwb3N0IDEwMDY0NDxSRVNFVD4KIAkJPEJPTEQ+LS0tIGEvcHJlPFJFU0VUPgogCQk8Qk9MRD4rKysgYi9wb3N0PFJFU0VUPgogCQk8Q1lBTj5AQCAtMSArMSBAQDxSRVNFVD4KQEAgLTI2OCw5ICsyNzUsMTEgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3Rlc3Qgd2hlbiB3b3JkcyBhcmUgb25seSByZW1vdmVkIGF0IHRoZSBlbmQnICcKIAllY2hvICIoOiIgPnByZSAmJgogCWVjaG8gIigiID5wb3N0ICYmCi0JY2F0ID5leHBlY3QgPDwtXEVPRiAmJgorCXByZT0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkKGdpdCBoYXNoLW9iamVjdCBwcmUpKSAmJgorCXBvc3Q9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgJChnaXQgaGFzaC1vYmplY3QgcG9zdCkpICYmCisJY2F0ID5leHBlY3QgPDwtRU9GICYmCiAJCTxCT0xEPmRpZmYgLS1naXQgYS9wcmUgYi9wb3N0PFJFU0VUPgotCQk8Qk9MRD5pbmRleCAyODljYjlkLi4yZDA2ZjM3IDEwMDY0NDxSRVNFVD4KKwkJPEJPTEQ+aW5kZXggJHByZS4uJHBvc3QgMTAwNjQ0PFJFU0VUPgogCQk8Qk9MRD4tLS0gYS9wcmU8UkVTRVQ+CiAJCTxCT0xEPisrKyBiL3Bvc3Q8UkVTRVQ+CiAJCTxDWUFOPkBAIC0xICsxIEBAPFJFU0VUPgpAQCAtMjgyLDkgKzI5MSwxMSBAQAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnLS13b3JkLWRpZmY9bm9uZScgJwogCWVjaG8gIig6IiA+cHJlICYmCiAJZWNobyAiKCIgPnBvc3QgJiYKLQljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJcHJlPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHByZSkpICYmCisJcG9zdD0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkKGdpdCBoYXNoLW9iamVjdCBwb3N0KSkgJiYKKwljYXQgPmV4cGVjdCA8PC1FT0YgJiYKIAkJZGlmZiAtLWdpdCBhL3ByZSBiL3Bvc3QKLQkJaW5kZXggMjg5Y2I5ZC4uMmQwNmYzNyAxMDA2NDQKKwkJaW5kZXggJHByZS4uJHBvc3QgMTAwNjQ0CiAJCS0tLSBhL3ByZQogCQkrKysgYi9wb3N0CiAJCUBAIC0xICsxIEBACkBAIC0zMTcsMTYgKzMyOCw2IEBACiB0ZXN0X2xhbmd1YWdlX2RyaXZlciB0ZXgKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnd29yZC1kaWZmIHdpdGggZGlmZi5zYmUnICcKLQljYXQgPmV4cGVjdCA8PC1cRU9GICYmCi0JZGlmZiAtLWdpdCBhL3ByZSBiL3Bvc3QKLQlpbmRleCBhMWE1M2I1Li5iYzhmZTZkIDEwMDY0NAotCS0tLSBhL3ByZQotCSsrKyBiL3Bvc3QKLQlAQCAtMSwzICsxLDMgQEAKLQlhCi0KLQlbLWItXXsrYyt9Ci0JRU9GCiAJY2F0ID5wcmUgPDwtXEVPRiAmJgogCWEKIApAQCAtMzM3LDIxICszMzgsMzUgQEAKIAogCWMKIAlFT0YKKwlwcmU9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgJChnaXQgaGFzaC1vYmplY3QgcHJlKSkgJiYKKwlwb3N0PSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0ICQoZ2l0IGhhc2gtb2JqZWN0IHBvc3QpKSAmJgorCWNhdCA+ZXhwZWN0IDw8LUVPRiAmJgorCWRpZmYgLS1naXQgYS9wcmUgYi9wb3N0CisJaW5kZXggJHByZS4uJHBvc3QgMTAwNjQ0CisJLS0tIGEvcHJlCisJKysrIGIvcG9zdAorCUBAIC0xLDMgKzEsMyBAQAorCWEKKworCVstYi1deytjK30KKwlFT0YKIAl0ZXN0X2NvbmZpZyBkaWZmLnN1cHByZXNzLWJsYW5rLWVtcHR5IHRydWUgJiYKIAl3b3JkX2RpZmYgLS13b3JkLWRpZmY9cGxhaW4KICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnd29yZC1kaWZmIHdpdGggbm8gbmV3bGluZSBhdCBFT0YnICcKLQljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJcHJpbnRmICIlcyIgImEgYSBhIGEgYSIgPnByZSAmJgorCXByaW50ZiAiJXMiICJhIGEgYWIgYSBhIiA+cG9zdCAmJgorCXByZT0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCAkKGdpdCBoYXNoLW9iamVjdCBwcmUpKSAmJgorCXBvc3Q9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgJChnaXQgaGFzaC1vYmplY3QgcG9zdCkpICYmCisJY2F0ID5leHBlY3QgPDwtRU9GICYmCiAJZGlmZiAtLWdpdCBhL3ByZSBiL3Bvc3QKLQlpbmRleCA3YmYzMTZlLi4zZGQwMzAzIDEwMDY0NAorCWluZGV4ICRwcmUuLiRwb3N0IDEwMDY0NAogCS0tLSBhL3ByZQogCSsrKyBiL3Bvc3QKIAlAQCAtMSArMSBAQAogCWEgYSBbLWEtXXsrYWIrfSBhIGEKIAlFT0YKLQlwcmludGYgIiVzIiAiYSBhIGEgYSBhIiA+cHJlICYmCi0JcHJpbnRmICIlcyIgImEgYSBhYiBhIGEiID5wb3N0ICYmCiAJd29yZF9kaWZmIC0td29yZC1kaWZmPXBsYWluCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDQwMzgtZGlmZi1jb21iaW5lZC5zaCBiL3QvdDQwMzgtZGlmZi1jb21iaW5lZC5zaAppbmRleCBiOWQ4NzZlLi5iNWE1Njg5IDEwMDc1NQotLS0gYS90L3Q0MDM4LWRpZmYtY29tYmluZWQuc2gKKysrIGIvdC90NDAzOC1kaWZmLWNvbWJpbmVkLnNoCkBAIC00NDAsMTEgKzQ0MCwxMyBAQAogCWdpdCBicmFuY2ggc2lkZTJjICYmCiAJZ2l0IGNoZWNrb3V0IHNpZGUxYyAmJgogCXRlc3Rfc2VxIDEgMTAgPmZpbGVuYW1lLXNpZGUxYyAmJgorCXNpZGUxY2Y9JChnaXQgaGFzaC1vYmplY3QgZmlsZW5hbWUtc2lkZTFjKSAmJgogCWdpdCBhZGQgZmlsZW5hbWUtc2lkZTFjICYmCiAJZ2l0IGNvbW1pdCAtbSB3aXRoICYmCiAJZ2l0IGNoZWNrb3V0IHNpZGUyYyAmJgogCXRlc3Rfc2VxIDEgOSA+ZmlsZW5hbWUtc2lkZTJjICYmCiAJZWNobyB0ZW4gPj5maWxlbmFtZS1zaWRlMmMgJiYKKwlzaWRlMmNmPSQoZ2l0IGhhc2gtb2JqZWN0IGZpbGVuYW1lLXNpZGUyYykgJiYKIAlnaXQgYWRkIGZpbGVuYW1lLXNpZGUyYyAmJgogCWdpdCBjb21taXQgLW0gaWFtICYmCiAJZ2l0IGNoZWNrb3V0IC1iIG1lcmdlcnkgc2lkZTFjICYmCkBAIC00NTIsMTMgKzQ1NCwxNCBAQAogCWdpdCBybSBmaWxlbmFtZS1zaWRlMWMgJiYKIAllY2hvIGVsZXZlbiA+PmZpbGVuYW1lLXNpZGUyYyAmJgogCWdpdCBtdiBmaWxlbmFtZS1zaWRlMmMgZmlsZW5hbWUtbWVyZ2VkICYmCisJbWVyZ2VkZj0kKGdpdCBoYXNoLW9iamVjdCBmaWxlbmFtZS1tZXJnZWQpICYmCiAJZ2l0IGFkZCBmaWxlbmFtZS1tZXJnZWQgJiYKIAlnaXQgY29tbWl0CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tY29tYmluZWQtYWxsLXBhdGhzIGFuZCAtLXJhdycgJwotCWNhdCA8PC1cRU9GID5leHBlY3QgJiYKLQk6OjEwMDY0NCAxMDA2NDQgMTAwNjQ0IGYwMGM5NjVkODMwNzMwODQ2OWU1MzczMDJiYWE3MzA0ODQ4OGYxNjIgMDg4YmQ1ZDkyYzJhOGUwMjAzY2E4ZTdlNGMyYTVjNjkyZjZhZTNmNyAzMzNiOWM2MjUxOWYyODVlMTg1NDgzMGFkZTBmZTFlZjFkNDBlZTFiIFJSCWZpbGVuYW1lLXNpZGUxYwlmaWxlbmFtZS1zaWRlMmMJZmlsZW5hbWUtbWVyZ2VkCisJY2F0IDw8LUVPRiA+ZXhwZWN0ICYmCisJOjoxMDA2NDQgMTAwNjQ0IDEwMDY0NCAkc2lkZTFjZiAkc2lkZTJjZiAkbWVyZ2VkZiBSUglmaWxlbmFtZS1zaWRlMWMJZmlsZW5hbWUtc2lkZTJjCWZpbGVuYW1lLW1lcmdlZAogCUVPRgogCWdpdCBkaWZmLXRyZWUgLWMgLU0gLS1yYXcgLS1jb21iaW5lZC1hbGwtcGF0aHMgSEVBRCA+YWN0dWFsLnRtcCAmJgogCXNlZCAxZCA8YWN0dWFsLnRtcCA+YWN0dWFsICYmCkBAIC00ODIsMTEgKzQ4NSwxMyBAQAogCWdpdCBjaGVja291dCBzaWRlMWQgJiYKIAl0ZXN0X3NlcSAxIDEwID4iJChwcmludGYgImZpbGVcdHdpdGhcdHRhYnMiKSIgJiYKIAlnaXQgYWRkIGZpbGUqICYmCisJc2lkZTFkZj0kKGdpdCBoYXNoLW9iamVjdCAqdGFicykgJiYKIAlnaXQgY29tbWl0IC1tIHdpdGggJiYKIAlnaXQgY2hlY2tvdXQgc2lkZTJkICYmCiAJdGVzdF9zZXEgMSA5ID4iJChwcmludGYgImlcdGFtXHR0YWJiZWQiKSIgJiYKIAllY2hvIHRlbiA+PiIkKHByaW50ZiAiaVx0YW1cdHRhYmJlZCIpIiAmJgogCWdpdCBhZGQgKnRhYmJlZCAmJgorCXNpZGUyZGY9JChnaXQgaGFzaC1vYmplY3QgKnRhYmJlZCkgJiYKIAlnaXQgY29tbWl0IC1tIGlhbSAmJgogCWdpdCBjaGVja291dCAtYiBmdW5ueS1uYW1lcy1tZXJnZXJ5IHNpZGUxZCAmJgogCWdpdCBtZXJnZSAtLW5vLWNvbW1pdCBzaWRlMmQgJiYKQEAgLTQ5NCwxMiArNDk5LDE0IEBACiAJZWNobyBlbGV2ZW4gPj4iJChwcmludGYgImlcdGFtXHR0YWJiZWQiKSIgJiYKIAlnaXQgbXYgIiQocHJpbnRmICJpXHRhbVx0dGFiYmVkIikiICIkKHByaW50ZiAiZmlja2xlXHRuYW1pbmciKSIgJiYKIAlnaXQgYWRkIGZpY2tsZSogJiYKLQlnaXQgY29tbWl0CisJaGVhZGY9JChnaXQgaGFzaC1vYmplY3QgZmlja2xlKikgJiYKKwlnaXQgY29tbWl0ICYmCisJaGVhZD0kKGdpdCByZXYtcGFyc2UgSEVBRCkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBGVU5OWU5BTUVTICctLWNvbWJpbmVkLWFsbC1wYXRocyBhbmQgLS1yYXcgYW5kIGZ1bm55IG5hbWVzJyAnCi0JY2F0IDw8LVxFT0YgPmV4cGVjdCAmJgotCTo6MTAwNjQ0IDEwMDY0NCAxMDA2NDQgZjAwYzk2NWQ4MzA3MzA4NDY5ZTUzNzMwMmJhYTczMDQ4NDg4ZjE2MiAwODhiZDVkOTJjMmE4ZTAyMDNjYThlN2U0YzJhNWM2OTJmNmFlM2Y3IDMzM2I5YzYyNTE5ZjI4NWUxODU0ODMwYWRlMGZlMWVmMWQ0MGVlMWIgUlIJImZpbGVcdHdpdGhcdHRhYnMiCSJpXHRhbVx0dGFiYmVkIgkiZmlja2xlXHRuYW1pbmciCisJY2F0IDw8LUVPRiA+ZXhwZWN0ICYmCisJOjoxMDA2NDQgMTAwNjQ0IDEwMDY0NCAkc2lkZTFkZiAkc2lkZTJkZiAkaGVhZGYgUlIJImZpbGVcdHdpdGhcdHRhYnMiCSJpXHRhbVx0dGFiYmVkIgkiZmlja2xlXHRuYW1pbmciCiAJRU9GCiAJZ2l0IGRpZmYtdHJlZSAtYyAtTSAtLXJhdyAtLWNvbWJpbmVkLWFsbC1wYXRocyBIRUFEID5hY3R1YWwudG1wICYmCiAJc2VkIDFkIDxhY3R1YWwudG1wID5hY3R1YWwgJiYKQEAgLTUwNyw3ICs1MTQsNyBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIEZVTk5ZTkFNRVMgJy0tY29tYmluZWQtYWxsLXBhdGhzIGFuZCAtLXJhdyAtYW5kIC16IGFuZCBmdW5ueSBuYW1lcycgJwotCXByaW50ZiAiYWFmODA4N2MzY2JkNGRiOGUxODVhMmQwNzRjZjI3YzUzY2ZiNzVkN1wwOjoxMDA2NDQgMTAwNjQ0IDEwMDY0NCBmMDBjOTY1ZDgzMDczMDg0NjllNTM3MzAyYmFhNzMwNDg0ODhmMTYyIDA4OGJkNWQ5MmMyYThlMDIwM2NhOGU3ZTRjMmE1YzY5MmY2YWUzZjcgMzMzYjljNjI1MTlmMjg1ZTE4NTQ4MzBhZGUwZmUxZWYxZDQwZWUxYiBSUlwwZmlsZVx0d2l0aFx0dGFic1wwaVx0YW1cdHRhYmJlZFwwZmlja2xlXHRuYW1pbmdcMCIgPmV4cGVjdCAmJgorCXByaW50ZiAiJGhlYWRcMDo6MTAwNjQ0IDEwMDY0NCAxMDA2NDQgJHNpZGUxZGYgJHNpZGUyZGYgJGhlYWRmIFJSXDBmaWxlXHR3aXRoXHR0YWJzXDBpXHRhbVx0dGFiYmVkXDBmaWNrbGVcdG5hbWluZ1wwIiA+ZXhwZWN0ICYmCiAJZ2l0IGRpZmYtdHJlZSAtYyAtTSAtLXJhdyAtLWNvbWJpbmVkLWFsbC1wYXRocyAteiBIRUFEID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCmRpZmYgLS1naXQgYS90L3Q0MDM5LWRpZmYtYXNzdW1lLXVuY2hhbmdlZC5zaCBiL3QvdDQwMzktZGlmZi1hc3N1bWUtdW5jaGFuZ2VkLnNoCmluZGV4IDUzYWM0NGIuLjBlYjAzMTQgMTAwNzU1Ci0tLSBhL3QvdDQwMzktZGlmZi1hc3N1bWUtdW5jaGFuZ2VkLnNoCisrKyBiL3QvdDQwMzktZGlmZi1hc3N1bWUtdW5jaGFuZ2VkLnNoCkBAIC0xMiw2ICsxMiw3IEBACiAJZ2l0IGNvbW1pdCAtbSB6ZXJvICYmCiAJZWNobyBvbmUgPiBvbmUgJiYKIAllY2hvIHR3byA+IHR3byAmJgorCWJsb2I9JChnaXQgaGFzaC1vYmplY3Qgb25lKSAmJgogCWdpdCBhZGQgb25lIHR3byAmJgogCWdpdCBjb21taXQgLW0gb25ldHdvICYmCiAJZ2l0IHVwZGF0ZS1pbmRleCAtLWFzc3VtZS11bmNoYW5nZWQgb25lICYmCkBAIC0yMCw3ICsyMSw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYtaW5kZXggZG9lcyBub3QgZXhhbWluZSBhc3N1bWUtdW5jaGFuZ2VkIGVudHJpZXMnICcKLQlnaXQgZGlmZi1pbmRleCBIRUFEXiAtLSBvbmUgfCBncmVwIC1xIDU2MjZhYmYwZjcyZTU4ZDdhMTUzMzY4YmE1N2RiNGM2NzNjMGUxNzEKKwlnaXQgZGlmZi1pbmRleCBIRUFEXiAtLSBvbmUgfCBncmVwIC1xICRibG9iCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYtZmlsZXMgZG9lcyBub3QgZXhhbWluZSBhc3N1bWUtdW5jaGFuZ2VkIGVudHJpZXMnICcKZGlmZiAtLWdpdCBhL3QvdDQwNDEtZGlmZi1zdWJtb2R1bGUtb3B0aW9uLnNoIGIvdC90NDA0MS1kaWZmLXN1Ym1vZHVsZS1vcHRpb24uc2gKaW5kZXggNjE5YmY5Ny4uZjg1MjEzNiAxMDA3NTUKLS0tIGEvdC90NDA0MS1kaWZmLXN1Ym1vZHVsZS1vcHRpb24uc2gKKysrIGIvdC90NDA0MS1kaWZmLXN1Ym1vZHVsZS1vcHRpb24uc2gKQEAgLTI4NCw3ICsyODQsNyBAQAogCXRlc3RfbXVzdF9iZV9lbXB0eSBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBhbmQgbW9kaWZlZCBjb250ZW50JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmllZCBjb250ZW50JyAnCiAJZWNobyBuZXcgPiBzbTEvZm9vNiAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgpAQCAtMjk0LDcgKzI5NCw3IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmZWQgY29udGVudCAodW50cmFja2VkIGlnbm9yZWQpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmllZCBjb250ZW50ICh1bnRyYWNrZWQgaWdub3JlZCknICcKIAllY2hvIG5ldyA+IHNtMS9mb282ICYmCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1pZ25vcmUtc3VibW9kdWxlcz11bnRyYWNrZWQgLS1zdWJtb2R1bGU9bG9nIEhFQUQgPmFjdHVhbCAmJgogCWNhdCA+ZXhwZWN0ZWQgPDwtRU9GICYmCkBAIC0zMDMsMTkgKzMwMywxOSBAQAogCXRlc3RfY21wIGV4cGVjdGVkIGFjdHVhbAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmVkIGNvbnRlbnQgKGRpcnR5IGlnbm9yZWQpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmllZCBjb250ZW50IChkaXJ0eSBpZ25vcmVkKScgJwogCWVjaG8gbmV3ID4gc20xL2ZvbzYgJiYKIAlnaXQgZGlmZi1pbmRleCAtcCAtLWlnbm9yZS1zdWJtb2R1bGVzPWRpcnR5IC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAl0ZXN0X211c3RfYmVfZW1wdHkgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3N1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmZWQgY29udGVudCAoYWxsIGlnbm9yZWQpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmllZCBjb250ZW50IChhbGwgaWdub3JlZCknICcKIAllY2hvIG5ldyA+IHNtMS9mb282ICYmCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1pZ25vcmUtc3VibW9kdWxlcyAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJdGVzdF9tdXN0X2JlX2VtcHR5IGFjdHVhbAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgY29udGFpbnMgbW9kaWZlZCBjb250ZW50JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdzdWJtb2R1bGUgY29udGFpbnMgbW9kaWZpZWQgY29udGVudCcgJwogCXJtIC1mIHNtMS9uZXctZmlsZSAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgpAQCAtMzY5LDcgKzM2OSw3IEBACiAJdGVzdF9tdXN0X2JlX2VtcHR5IGFjdHVhbAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmVkIGNvbnRlbnQnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmaWVkIGNvbnRlbnQnICcKIAllY2hvIG1vZGlmaWNhdGlvbiA+PiBzbTEvZm9vNiAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgpAQCAtMzgxLDcgKzM4MSw3IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmZWQgY29udGVudCAodW50cmFja2VkIGlnbm9yZWQpJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgdW50cmFja2VkIGFuZCBtb2RpZmllZCBjb250ZW50ICh1bnRyYWNrZWQgaWdub3JlZCknICcKIAllY2hvIG1vZGlmaWNhdGlvbiA+PiBzbTEvZm9vNiAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0taWdub3JlLXN1Ym1vZHVsZXM9dW50cmFja2VkIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgpAQCAtMzkyLDcgKzM5Miw3IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmZWQgY29udGVudCAoZGlydHkgaWdub3JlZCknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmaWVkIGNvbnRlbnQgKGRpcnR5IGlnbm9yZWQpJyAnCiAJZWNobyBtb2RpZmljYXRpb24gPj4gc20xL2ZvbzYgJiYKIAlnaXQgZGlmZi1pbmRleCAtcCAtLWlnbm9yZS1zdWJtb2R1bGVzPWRpcnR5IC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgpAQCAtNDAyLDEzICs0MDIsMTMgQEAKIAl0ZXN0X2NtcCBleHBlY3RlZCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnbW9kaWZpZWQgc3VibW9kdWxlIGNvbnRhaW5zIHVudHJhY2tlZCBhbmQgbW9kaWZlZCBjb250ZW50IChhbGwgaWdub3JlZCknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21vZGlmaWVkIHN1Ym1vZHVsZSBjb250YWlucyB1bnRyYWNrZWQgYW5kIG1vZGlmaWVkIGNvbnRlbnQgKGFsbCBpZ25vcmVkKScgJwogCWVjaG8gbW9kaWZpY2F0aW9uID4+IHNtMS9mb282ICYmCiAJZ2l0IGRpZmYtaW5kZXggLXAgLS1pZ25vcmUtc3VibW9kdWxlcyAtLXN1Ym1vZHVsZT1sb2cgSEVBRCA+YWN0dWFsICYmCiAJdGVzdF9tdXN0X2JlX2VtcHR5IGFjdHVhbAogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgbW9kaWZlZCBjb250ZW50JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2RpZmllZCBzdWJtb2R1bGUgY29udGFpbnMgbW9kaWZpZWQgY29udGVudCcgJwogCXJtIC1mIHNtMS9uZXctZmlsZSAmJgogCWdpdCBkaWZmLWluZGV4IC1wIC0tc3VibW9kdWxlPWxvZyBIRUFEID5hY3R1YWwgJiYKIAljYXQgPmV4cGVjdGVkIDw8LUVPRiAmJgpkaWZmIC0tZ2l0IGEvdC90NDA0NC1kaWZmLWluZGV4LXVuaXF1ZS1hYmJyZXYuc2ggYi90L3Q0MDQ0LWRpZmYtaW5kZXgtdW5pcXVlLWFiYnJldi5zaAppbmRleCA2NDc5MDVlLi40NzAxNzk2IDEwMDc1NQotLS0gYS90L3Q0MDQ0LWRpZmYtaW5kZXgtdW5pcXVlLWFiYnJldi5zaAorKysgYi90L3Q0MDQ0LWRpZmYtaW5kZXgtdW5pcXVlLWFiYnJldi5zaApAQCAtMywzNCArMyw0OCBAQAogdGVzdF9kZXNjcmlwdGlvbj0ndGVzdCB1bmlxdWUgc2hhMSBhYmJyZXZpYXRpb24gb24gImluZGV4IGZyb20uLnRvIiBsaW5lJwogLiAuL3Rlc3QtbGliLnNoCiAKLWlmICEgdGVzdF9oYXZlX3ByZXJlcSBTSEExCi10aGVuCi0gICAgICAgc2tpcF9hbGw9J25vdCB1c2luZyBTSEEtMSBmb3Igb2JqZWN0cycKLSAgICAgICB0ZXN0X2RvbmUKLWZpCi0KLWNhdCA+ZXhwZWN0X2luaXRpYWwgPDxFT0YKLTEwMDY0NCBibG9iIDUxZDI3Mzg0NjNlYTRjYTY2Zjg2OTFjOTFlMzNjZTY0YjdkNDFiYjEJZm9vCi1FT0YKLQotY2F0ID5leHBlY3RfdXBkYXRlIDw8RU9GCi0xMDA2NDQgYmxvYiA1MWQyNzM4ZWZiNGFkOGExZTQwYmVkODM5YWI4ZTExNmYwYTE1ZTQ3CWZvbwotRU9GCi0KIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwJyAnCi0JZWNobyA0ODI3ID4gZm9vICYmCisJdGVzdF9vaWRfY2FjaGUgPDwtRU9GICYmCisJdmFsMSBzaGExOjQ4MjcKKwl2YWwxIHNoYTI1Njo1NjY0CisKKwl2YWwyIHNoYTE6MTE3NDIKKwl2YWwyIHNoYTI1NjoxMDYyNQorCisJaGFzaDEgc2hhMTo1MWQyNzM4NDYzZWE0Y2E2NmY4NjkxYzkxZTMzY2U2NGI3ZDQxYmIxCisJaGFzaDEgc2hhMjU2OmFlMzFkZmZmMGFmOTNiMmM2MmIwMDk4YTAzOWIzODU2OWM0M2IwYTdlOTdiODczMDAwY2E0MmQxMjhmMjczNTAKKworCWhhc2h0MSBzaGExOjUxZDI3Mzg0CisJaGFzaHQxIHNoYTI1NjphZTMxZGZmZgorCisJaGFzaDIgc2hhMTo1MWQyNzM4ZWZiNGFkOGExZTQwYmVkODM5YWI4ZTExNmYwYTE1ZTQ3CisJaGFzaDIgc2hhMjU2OmFlMzFkZmZhZGE4OGE0NmZkNWY1M2M3ZWQ1YWEyNWE3YTg5NTFmMWQ1ZTg4NDU2YzMxN2M4ZDU0ODRkMjYzZTUKKworCWhhc2h0MiBzaGExOjUxZDI3MzhlCisJaGFzaHQyIHNoYTI1NjphZTMxZGZmYQorCUVPRgorCisJY2F0ID5leHBlY3RfaW5pdGlhbCA8PC1FT0YgJiYKKwkxMDA2NDQgYmxvYiAkKHRlc3Rfb2lkIGhhc2gxKQlmb28KKwlFT0YKKworCWNhdCA+ZXhwZWN0X3VwZGF0ZSA8PC1FT0YgJiYKKwkxMDA2NDQgYmxvYiAkKHRlc3Rfb2lkIGhhc2gyKQlmb28KKwlFT0YKKworCWVjaG8gIiQodGVzdF9vaWQgdmFsMSkiID4gZm9vICYmCiAJZ2l0IGFkZCBmb28gJiYKIAlnaXQgY29tbWl0IC1tICJpbml0aWFsIiAmJgogCWdpdCBjYXQtZmlsZSAtcCBIRUFEOiA+IGFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdF9pbml0aWFsIGFjdHVhbCAmJgotCWVjaG8gMTE3NDIgPiBmb28gJiYKKwllY2hvICIkKHRlc3Rfb2lkIHZhbDIpIiA+IGZvbyAmJgogCWdpdCBjb21taXQgLWEgLW0gInVwZGF0ZSIgJiYKIAlnaXQgY2F0LWZpbGUgLXAgSEVBRDogPiBhY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3RfdXBkYXRlIGFjdHVhbAogJwogCiBjYXQgPmV4cGVjdCA8PEVPRgotaW5kZXggNTFkMjczODQuLjUxZDI3MzhlIDEwMDY0NAoraW5kZXggJCh0ZXN0X29pZCBoYXNodDEpLi4kKHRlc3Rfb2lkIGhhc2h0MikgMTAwNjQ0CiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiBkb2VzIG5vdCBwcm9kdWNlIGFtYmlndW91cyBpbmRleCBsaW5lJyAnCmRpZmYgLS1naXQgYS90L3Q0MDQ1LWRpZmYtcmVsYXRpdmUuc2ggYi90L3Q0MDQ1LWRpZmYtcmVsYXRpdmUuc2gKaW5kZXggMzZmOGVkOC4uMjU4ODA4NyAxMDA3NTUKLS0tIGEvdC90NDA0NS1kaWZmLXJlbGF0aXZlLnNoCisrKyBiL3QvdDQwNDUtZGlmZi1yZWxhdGl2ZS5zaApAQCAtNzAsNyArNzAsNyBAQAogCWV4cGVjdD0kMQogCXNoaWZ0CiAJY2F0ID5leHBlY3RlZCA8PC1FT0YKLQk6MDAwMDAwIDEwMDY0NCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwICRibG9iIEEJJGV4cGVjdAorCTowMDAwMDAgMTAwNjQ0ICRaRVJPX09JRCAkYmxvYiBBCSRleHBlY3QKIAlFT0YKIAl0ZXN0X2V4cGVjdF9zdWNjZXNzICItLXJhdyAkKiIgIgogCQlnaXQgLUMgJyRkaXInIGRpZmYgLS1uby1hYmJyZXYgLS1yYXcgJCogSEVBRF4gPmFjdHVhbCAmJgpkaWZmIC0tZ2l0IGEvdC90NDA0OC1kaWZmLWNvbWJpbmVkLWJpbmFyeS5zaCBiL3QvdDQwNDgtZGlmZi1jb21iaW5lZC1iaW5hcnkuc2gKaW5kZXggODdhODk0OS4uN2Y5YWQ5ZiAxMDA3NTUKLS0tIGEvdC90NDA0OC1kaWZmLWNvbWJpbmVkLWJpbmFyeS5zaAorKysgYi90L3Q0MDQ4LWRpZmYtY29tYmluZWQtYmluYXJ5LnNoCkBAIC05LDI0ICs5LDI3IEBACiAJZ2l0IGNvbW1pdCAtbSBvbmUgJiYKIAllY2hvIHR3b1EyIHwgcV90b19udWwgPmJpbmFyeSAmJgogCWdpdCBjb21taXQgLWEgLW0gdHdvICYmCisJdHdvPSQoZ2l0IHJldi1wYXJzZSAtLXNob3J0IEhFQUQ6YmluYXJ5KSAmJgogCWdpdCBjaGVja291dCAtYiBicmFuY2gtYmluYXJ5IEhFQUReICYmCiAJZWNobyB0aHJlZVEzIHwgcV90b19udWwgPmJpbmFyeSAmJgogCWdpdCBjb21taXQgLWEgLW0gdGhyZWUgJiYKKwl0aHJlZT0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEOmJpbmFyeSkgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgbWFzdGVyICYmCiAJZWNobyByZXNvbHZlZFFob29yYXkgfCBxX3RvX251bCA+YmluYXJ5ICYmCi0JZ2l0IGNvbW1pdCAtYSAtbSByZXNvbHZlZAorCWdpdCBjb21taXQgLWEgLW0gcmVzb2x2ZWQgJiYKKwlyZXM9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRDpiaW5hcnkpCiAnCiAKLWNhdCA+ZXhwZWN0IDw8J0VPRicKK2NhdCA+ZXhwZWN0IDw8RU9GCiByZXNvbHZlZAogCiBkaWZmIC0tZ2l0IGEvYmluYXJ5IGIvYmluYXJ5Ci1pbmRleCA3ZWE2ZGVkLi45NTYzNjkxIDEwMDY0NAoraW5kZXggJHRocmVlLi4kcmVzIDEwMDY0NAogQmluYXJ5IGZpbGVzIGEvYmluYXJ5IGFuZCBiL2JpbmFyeSBkaWZmZXIKIHJlc29sdmVkCiAKIGRpZmYgLS1naXQgYS9iaW5hcnkgYi9iaW5hcnkKLWluZGV4IDYxOTc1NzAuLjk1NjM2OTEgMTAwNjQ0CitpbmRleCAkdHdvLi4kcmVzIDEwMDY0NAogQmluYXJ5IGZpbGVzIGEvYmluYXJ5IGFuZCBiL2JpbmFyeSBkaWZmZXIKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiAtbSBpbmRpY2F0ZXMgYmluYXJ5LW5lc3MnICcKQEAgLTM0LDExICszNywxMSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotY2F0ID5leHBlY3QgPDwnRU9GJworY2F0ID5leHBlY3QgPDxFT0YKIHJlc29sdmVkCiAKIGRpZmYgLS1jb21iaW5lZCBiaW5hcnkKLWluZGV4IDdlYTZkZWQsNjE5NzU3MC4uOTU2MzY5MQoraW5kZXggJHRocmVlLCR0d28uLiRyZXMKIEJpbmFyeSBmaWxlcyBkaWZmZXIKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiAtYyBpbmRpY2F0ZXMgYmluYXJ5LW5lc3MnICcKQEAgLTQ2LDExICs0OSwxMSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotY2F0ID5leHBlY3QgPDwnRU9GJworY2F0ID5leHBlY3QgPDxFT0YKIHJlc29sdmVkCiAKIGRpZmYgLS1jYyBiaW5hcnkKLWluZGV4IDdlYTZkZWQsNjE5NzU3MC4uOTU2MzY5MQoraW5kZXggJHRocmVlLCR0d28uLiRyZXMKIEJpbmFyeSBmaWxlcyBkaWZmZXIKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiAtLWNjIGluZGljYXRlcyBiaW5hcnktbmVzcycgJwpAQCAtNjIsMjMgKzY1LDI2IEBACiAJZ2l0IGNoZWNrb3V0IG1hc3RlciAmJgogCXRlc3RfY29tbWl0IG9uZSB0ZXh0ICYmCiAJdGVzdF9jb21taXQgdHdvIHRleHQgJiYKKwl0d289JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRDp0ZXh0KSAmJgogCWdpdCBjaGVja291dCAtYiBicmFuY2gtdGV4dCBIRUFEXiAmJgogCXRlc3RfY29tbWl0IHRocmVlIHRleHQgJiYKKwl0aHJlZT0kKGdpdCByZXYtcGFyc2UgLS1zaG9ydCBIRUFEOnRleHQpICYmCiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIG1hc3RlciAmJgogCXRlc3RfY29tbWl0IHJlc29sdmVkIHRleHQgJiYKKwlyZXM9JChnaXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRDp0ZXh0KSAmJgogCWVjaG8gdGV4dCAtZGlmZiA+LmdpdGF0dHJpYnV0ZXMKICcKIAotY2F0ID5leHBlY3QgPDwnRU9GJworY2F0ID5leHBlY3QgPDxFT0YKIHJlc29sdmVkCiAKIGRpZmYgLS1naXQgYS90ZXh0IGIvdGV4dAotaW5kZXggMmJkZjY3YS4uMmFiMTlhZSAxMDA2NDQKK2luZGV4ICR0aHJlZS4uJHJlcyAxMDA2NDQKIEJpbmFyeSBmaWxlcyBhL3RleHQgYW5kIGIvdGV4dCBkaWZmZXIKIHJlc29sdmVkCiAKIGRpZmYgLS1naXQgYS90ZXh0IGIvdGV4dAotaW5kZXggZjcxOWVmZC4uMmFiMTlhZSAxMDA2NDQKK2luZGV4ICR0d28uLiRyZXMgMTAwNjQ0CiBCaW5hcnkgZmlsZXMgYS90ZXh0IGFuZCBiL3RleHQgZGlmZmVyCiBFT0YKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2RpZmYgLW0gcmVzcGVjdHMgYmluYXJ5IGF0dHJpYnV0ZScgJwpAQCAtODYsMTEgKzkyLDExIEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCi1jYXQgPmV4cGVjdCA8PCdFT0YnCitjYXQgPmV4cGVjdCA8PEVPRgogcmVzb2x2ZWQKIAogZGlmZiAtLWNvbWJpbmVkIHRleHQKLWluZGV4IDJiZGY2N2EsZjcxOWVmZC4uMmFiMTlhZQoraW5kZXggJHRocmVlLCR0d28uLiRyZXMKIEJpbmFyeSBmaWxlcyBkaWZmZXIKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiAtYyByZXNwZWN0cyBiaW5hcnkgYXR0cmlidXRlJyAnCkBAIC05OCwxMSArMTA0LDExIEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCi1jYXQgPmV4cGVjdCA8PCdFT0YnCitjYXQgPmV4cGVjdCA8PEVPRgogcmVzb2x2ZWQKIAogZGlmZiAtLWNjIHRleHQKLWluZGV4IDJiZGY2N2EsZjcxOWVmZC4uMmFiMTlhZQoraW5kZXggJHRocmVlLCR0d28uLiRyZXMKIEJpbmFyeSBmaWxlcyBkaWZmZXIKIEVPRgogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZGlmZiAtLWNjIHJlc3BlY3RzIGJpbmFyeSBhdHRyaWJ1dGUnICcKQEAgLTExNSwxMSArMTIxLDExIEBACiAJZ2l0IGNvbmZpZyBkaWZmLnVwY2FzZS50ZXh0Y29udiAidHIgYS16IEEtWiA8IgogJwogCi1jYXQgPmV4cGVjdCA8PCdFT0YnCitjYXQgPmV4cGVjdCA8PEVPRgogcmVzb2x2ZWQKIAogZGlmZiAtLWdpdCBhL3RleHQgYi90ZXh0Ci1pbmRleCAyYmRmNjdhLi4yYWIxOWFlIDEwMDY0NAoraW5kZXggJHRocmVlLi4kcmVzIDEwMDY0NAogLS0tIGEvdGV4dAogKysrIGIvdGV4dAogQEAgLTEgKzEgQEAKQEAgLTEyOCw3ICsxMzQsNyBAQAogcmVzb2x2ZWQKIAogZGlmZiAtLWdpdCBhL3RleHQgYi90ZXh0Ci1pbmRleCBmNzE5ZWZkLi4yYWIxOWFlIDEwMDY0NAoraW5kZXggJHR3by4uJHJlcyAxMDA2NDQKIC0tLSBhL3RleHQKICsrKyBiL3RleHQKIEBAIC0xICsxIEBACkBAIC0xNDAsMTEgKzE0NiwxMSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotY2F0ID5leHBlY3QgPDwnRU9GJworY2F0ID5leHBlY3QgPDxFT0YKIHJlc29sdmVkCiAKIGRpZmYgLS1jb21iaW5lZCB0ZXh0Ci1pbmRleCAyYmRmNjdhLGY3MTllZmQuLjJhYjE5YWUKK2luZGV4ICR0aHJlZSwkdHdvLi4kcmVzCiAtLS0gYS90ZXh0CiArKysgYi90ZXh0CiBAQEAgLTEsMSAtMSwxICsxLDEgQEBACkBAIC0xNTcsMTEgKzE2MywxMSBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotY2F0ID5leHBlY3QgPDwnRU9GJworY2F0ID5leHBlY3QgPDxFT0YKIHJlc29sdmVkCiAKIGRpZmYgLS1jYyB0ZXh0Ci1pbmRleCAyYmRmNjdhLGY3MTllZmQuLjJhYjE5YWUKK2luZGV4ICR0aHJlZSwkdHdvLi4kcmVzCiAtLS0gYS90ZXh0CiArKysgYi90ZXh0CiBAQEAgLTEsMSAtMSwxICsxLDEgQEBACkBAIC0xNzQsOSArMTgwLDkgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLWNhdCA+ZXhwZWN0IDw8J0VPRicKK2NhdCA+ZXhwZWN0IDw8RU9GCiBkaWZmIC0tY29tYmluZWQgdGV4dAotaW5kZXggMmJkZjY3YSxmNzE5ZWZkLi4yYWIxOWFlCitpbmRleCAkdGhyZWUsJHR3by4uJHJlcwogLS0tIGEvdGV4dAogKysrIGIvdGV4dAogQEBAIC0xLDEgLTEsMSArMSwxIEBAQApAQCAtMTkwLDkgKzE5Niw5IEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCi1jYXQgPmV4cGVjdCA8PCdFT0YnCitjYXQgPmV4cGVjdCA8PEVPRgogZGlmZiAtLWNjIHRleHQKLWluZGV4IDJiZGY2N2EsZjcxOWVmZC4uMDAwMDAwMAoraW5kZXggJHRocmVlLCR0d28uLjAwMDAwMDAKIC0tLSBhL3RleHQKICsrKyBiL3RleHQKIEBAQCAtMSwxIC0xLDEgKzEsNSBAQEAKZGlmZiAtLWdpdCBhL3QvdDQwNTctZGlmZi1jb21iaW5lZC1wYXRocy5zaCBiL3QvdDQwNTctZGlmZi1jb21iaW5lZC1wYXRocy5zaAppbmRleCBkZmYzNmI3Li40ZjRiNTQxIDEwMDc1NQotLS0gYS90L3Q0MDU3LWRpZmYtY29tYmluZWQtcGF0aHMuc2gKKysrIGIvdC90NDA1Ny1kaWZmLWNvbWJpbmVkLXBhdGhzLnNoCkBAIC0zMyw3ICszMyw3IEBACiAnCiAKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnb25seSBvbmUgdHJ1bGx5IGNvbmZsaWN0aW5nIHBhdGgnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ29ubHkgb25lIHRydWx5IGNvbmZsaWN0aW5nIHBhdGgnICcKIAlnaXQgY2hlY2tvdXQgc2lkZSAmJgogCWZvciBpIGluICQodGVzdF9zZXEgMiA5KQogCWRvCmRpZmYgLS1naXQgYS90L3Q0MTAwL3QtYXBwbHktMS5wYXRjaCBiL3QvdDQxMDAvdC1hcHBseS0xLnBhdGNoCmluZGV4IDkwYWI1NGYuLjQzMzk0ZjggMTAwNjQ0Ci0tLSBhL3QvdDQxMDAvdC1hcHBseS0xLnBhdGNoCisrKyBiL3QvdDQxMDAvdC1hcHBseS0xLnBhdGNoCkBAIC03NSw4ICs3NSw4IEBACiArbGluazpnaXQtc3NoLXB1bGwuaHRtbFtnaXQtc3NoLXB1bGxdOjoKICAJUHVsbHMgZnJvbSBhIHJlbW90ZSByZXBvc2l0b3J5IG92ZXIgc3NoIGNvbm5lY3Rpb24KICAKLSBJbnRlcm9nYXRvcnM6Ci1AQCAtMTU2LDggKzE1Niw4IEBAIEludGVyb2dhdG9yczoKKyBJbnRlcnJvZ2F0b3JzOgorQEAgLTE1Niw4ICsxNTYsOCBAQCBJbnRlcnJvZ2F0b3JzOgogIGxpbms6Z2l0LWRpZmYtaGVscGVyLmh0bWxbZ2l0LWRpZmYtaGVscGVyXTo6CiAgCUdlbmVyYXRlcyBwYXRjaCBmb3JtYXQgb3V0cHV0IGZvciBnaXQtZGlmZi0qCiAgCmRpZmYgLS1naXQgYS90L3Q0MTAwL3QtYXBwbHktMy5wYXRjaCBiL3QvdDQxMDAvdC1hcHBseS0zLnBhdGNoCmluZGV4IDkwY2RiYWEuLmNhYzE3MmUgMTAwNjQ0Ci0tLSBhL3QvdDQxMDAvdC1hcHBseS0zLnBhdGNoCisrKyBiL3QvdDQxMDAvdC1hcHBseS0zLnBhdGNoCkBAIC0yMTEsNyArMjExLDcgQEAKIC0KIC0JCS8qIElmIHRoaXMgaXMgYW4gZXhhY3QgZGlyZWN0b3J5IG1hdGNoLCB3ZSBtYXkgaGF2ZQogLQkJICogZGlyZWN0b3J5IGZpbGVzIGZvbGxvd2luZyB0aGlzIHBhdGguIE1hdGNoIG9uIHRoZW0uCi0tCQkgKiBPdGhlcndpc2UsIHdlJ3JlIGF0IGEgcGFjaCBzdWJjb21wb25lbnQsIGFuZCB3ZSBuZWVkCistCQkgKiBPdGhlcndpc2UsIHdlJ3JlIGF0IGEgcGF0Y2ggc3ViY29tcG9uZW50LCBhbmQgd2UgbmVlZAogLQkJICogdG8gdHJ5IHRvIG1hdGNoIGFnYWluLgogLQkJICovCiAtCQlpZiAobXR5cGUgPT0gMCkKZGlmZiAtLWdpdCBhL3QvdDQxMDAvdC1hcHBseS01LnBhdGNoIGIvdC90NDEwMC90LWFwcGx5LTUucGF0Y2gKaW5kZXggNWY2ZGRjMS4uNTdlYzc5ZCAxMDA2NDQKLS0tIGEvdC90NDEwMC90LWFwcGx5LTUucGF0Y2gKKysrIGIvdC90NDEwMC90LWFwcGx5LTUucGF0Y2gKQEAgLTE4NSw4ICsxODUsOCBAQAogK2xpbms6Z2l0LXNzaC1wdWxsLmh0bWxbZ2l0LXNzaC1wdWxsXTo6CiAgCVB1bGxzIGZyb20gYSByZW1vdGUgcmVwb3NpdG9yeSBvdmVyIHNzaCBjb25uZWN0aW9uCiAgCi0gSW50ZXJvZ2F0b3JzOgotQEAgLTE1Niw4ICsxNTYsOCBAQCBJbnRlcm9nYXRvcnM6CisgSW50ZXJyb2dhdG9yczoKK0BAIC0xNTYsOCArMTU2LDggQEAgSW50ZXJyb2dhdG9yczoKICBsaW5rOmdpdC1kaWZmLWhlbHBlci5odG1sW2dpdC1kaWZmLWhlbHBlcl06OgogIAlHZW5lcmF0ZXMgcGF0Y2ggZm9ybWF0IG91dHB1dCBmb3IgZ2l0LWRpZmYtKgogIApkaWZmIC0tZ2l0IGEvdC90NDEwMC90LWFwcGx5LTcucGF0Y2ggYi90L3Q0MTAwL3QtYXBwbHktNy5wYXRjaAppbmRleCAwN2M2NTg5Li5mYTI0MzA1IDEwMDY0NAotLS0gYS90L3Q0MTAwL3QtYXBwbHktNy5wYXRjaAorKysgYi90L3Q0MTAwL3QtYXBwbHktNy5wYXRjaApAQCAtMzM1LDcgKzMzNSw3IEBACiAgCiAtCQkvKiBJZiB0aGlzIGlzIGFuIGV4YWN0IGRpcmVjdG9yeSBtYXRjaCwgd2UgbWF5IGhhdmUKIC0JCSAqIGRpcmVjdG9yeSBmaWxlcyBmb2xsb3dpbmcgdGhpcyBwYXRoLiBNYXRjaCBvbiB0aGVtLgotLQkJICogT3RoZXJ3aXNlLCB3ZSdyZSBhdCBhIHBhY2ggc3ViY29tcG9uZW50LCBhbmQgd2UgbmVlZAorLQkJICogT3RoZXJ3aXNlLCB3ZSdyZSBhdCBhIHBhdGNoIHN1YmNvbXBvbmVudCwgYW5kIHdlIG5lZWQKIC0JCSAqIHRvIHRyeSB0byBtYXRjaCBhZ2Fpbi4KICsJaWYgKGUtPmRpcmVjdG9yeSkgewogKwkJLyogSWYgdGhpcyBpcyBhIGRpcmVjdG9yeSwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGNhc2VzOgpkaWZmIC0tZ2l0IGEvdC90NDEwOC1hcHBseS10aHJlZXdheS5zaCBiL3QvdDQxMDgtYXBwbHktdGhyZWV3YXkuc2gKaW5kZXggZmE1ZDRlZi4uZDczNDljZSAxMDA3NTUKLS0tIGEvdC90NDEwOC1hcHBseS10aHJlZXdheS5zaAorKysgYi90L3Q0MTA4LWFwcGx5LXRocmVld2F5LnNoCkBAIC00LDIzICs0LDE3IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi1jcmVhdGVfZmlsZSAoKSB7Ci0JZm9yIGkKLQlkbwotCQllY2hvICIkaSIKLQlkb25lCi19Ci0KLXNhbml0aXplX2NvbmZsaWN0ZWRfZGlmZiAoKSB7CitwcmludF9zYW5pdGl6ZWRfY29uZmxpY3RlZF9kaWZmICgpIHsKKwlnaXQgZGlmZiBIRUFEID5kaWZmLnJhdyAmJgogCXNlZCAtZSAnCiAJCS9eaW5kZXggL2QKLQkJcy9eXCgrWzw+XVs8Pl1bPD5dWzw+XSpcKSAuKi9cMS8KLQknCisJCXMvXlwoK1s8PnxdWzw+fF1bPD58XVs8PnxdKlwpIC4qL1wxLworCScgZGlmZi5yYXcKIH0KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBzZXR1cCAnCiAJdGVzdF90aWNrICYmCi0JY3JlYXRlX2ZpbGUgPm9uZSAxIDIgMyA0IDUgNiA3ICYmCisJdGVzdF93cml0ZV9saW5lcyAxIDIgMyA0IDUgNiA3ID5vbmUgJiYKIAljYXQgb25lID50d28gJiYKIAlnaXQgYWRkIG9uZSB0d28gJiYKIAlnaXQgY29tbWl0IC1tIGluaXRpYWwgJiYKQEAgLTI4LDEzICsyMiwxMyBAQAogCWdpdCBicmFuY2ggc2lkZSAmJgogCiAJdGVzdF90aWNrICYmCi0JY3JlYXRlX2ZpbGUgPm9uZSAxIHR3byAzIDQgNSBzaXggNyAmJgotCWNyZWF0ZV9maWxlID50d28gMSB0d28gMyA0IDUgNiA3ICYmCisJdGVzdF93cml0ZV9saW5lcyAxIHR3byAzIDQgNSBzaXggNyA+b25lICYmCisJdGVzdF93cml0ZV9saW5lcyAxIHR3byAzIDQgNSA2IDcgPnR3byAmJgogCWdpdCBjb21taXQgLWEgLW0gbWFzdGVyICYmCiAKIAlnaXQgY2hlY2tvdXQgc2lkZSAmJgotCWNyZWF0ZV9maWxlID5vbmUgMSAyIDMgNCBmaXZlIDYgNyAmJgotCWNyZWF0ZV9maWxlID50d28gMSAyIDMgNCBmaXZlIDYgNyAmJgorCXRlc3Rfd3JpdGVfbGluZXMgMSAyIDMgNCBmaXZlIDYgNyA+b25lICYmCisJdGVzdF93cml0ZV9saW5lcyAxIDIgMyA0IGZpdmUgNiA3ID50d28gJiYKIAlnaXQgY29tbWl0IC1hIC1tIHNpZGUgJiYKIAogCWdpdCBjaGVja291dCBtYXN0ZXIKQEAgLTUyLDcgKzQ2LDcgQEAKIAlnaXQgZGlmZi1pbmRleCAtLWV4aXQtY29kZSAtLWNhY2hlZCBIRUFECiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IHdpdGggLS0zd2F5JyAnCit0ZXN0X2FwcGx5X3dpdGhfM3dheSAoKSB7CiAJIyBNZXJnaW5nIHNpZGUgc2hvdWxkIGJlIHNpbWlsYXIgdG8gYXBwbHlpbmcgdGhpcyBwYXRjaAogCWdpdCBkaWZmIC4uLnNpZGUgPlAuZGlmZiAmJgogCkBAIC02MSwyMiArNTUsMzEgQEAKIAlnaXQgY2hlY2tvdXQgbWFzdGVyXjAgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgLS1uby1jb21taXQgc2lkZSAmJgogCWdpdCBscy1maWxlcyAtcyA+ZXhwZWN0LmxzICYmCi0JZ2l0IGRpZmYgSEVBRCB8IHNhbml0aXplX2NvbmZsaWN0ZWRfZGlmZiA+ZXhwZWN0LmRpZmYgJiYKKwlwcmludF9zYW5pdGl6ZWRfY29uZmxpY3RlZF9kaWZmID5leHBlY3QuZGlmZiAmJgogCiAJIyBzaG91bGQgZmFpbCB0byBhcHBseQogCWdpdCByZXNldCAtLWhhcmQgJiYKIAlnaXQgY2hlY2tvdXQgbWFzdGVyXjAgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgYXBwbHkgLS1pbmRleCAtLTN3YXkgUC5kaWZmICYmCiAJZ2l0IGxzLWZpbGVzIC1zID5hY3R1YWwubHMgJiYKLQlnaXQgZGlmZiBIRUFEIHwgc2FuaXRpemVfY29uZmxpY3RlZF9kaWZmID5hY3R1YWwuZGlmZiAmJgorCXByaW50X3Nhbml0aXplZF9jb25mbGljdGVkX2RpZmYgPmFjdHVhbC5kaWZmICYmCiAKIAkjIFRoZSByZXN1bHQgc2hvdWxkIHJlc2VtYmxlIHRoZSBjb3JyZXNwb25kaW5nIG1lcmdlCiAJdGVzdF9jbXAgZXhwZWN0LmxzIGFjdHVhbC5scyAmJgogCXRlc3RfY21wIGV4cGVjdC5kaWZmIGFjdHVhbC5kaWZmCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IHdpdGggLS0zd2F5JyAnCisJdGVzdF9hcHBseV93aXRoXzN3YXkKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnYXBwbHkgd2l0aCAtLTN3YXkgd2l0aCBtZXJnZS5jb25mbGljdFN0eWxlID0gZGlmZjMnICcKKwl0ZXN0X2NvbmZpZyBtZXJnZS5jb25mbGljdFN0eWxlIGRpZmYzICYmCisJdGVzdF9hcHBseV93aXRoXzN3YXkKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnYXBwbHkgd2l0aCAtLTN3YXkgd2l0aCByZXJlcmUgZW5hYmxlZCcgJwotCWdpdCBjb25maWcgcmVyZXJlLmVuYWJsZWQgdHJ1ZSAmJgorCXRlc3RfY29uZmlnIHJlcmVyZS5lbmFibGVkIHRydWUgJiYKIAogCSMgTWVyZ2luZyBzaWRlIHNob3VsZCBiZSBzaW1pbGFyIHRvIGFwcGx5aW5nIHRoaXMgcGF0Y2gKIAlnaXQgZGlmZiAuLi5zaWRlID5QLmRpZmYgJiYKQEAgLTg3LDcgKzkwLDcgQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgbWVyZ2UgLS1uby1jb21taXQgc2lkZSAmJgogCiAJIyBNYW51YWxseSByZXNvbHZlIGFuZCByZWNvcmQgdGhlIHJlc29sdXRpb24KLQljcmVhdGVfZmlsZSAxIHR3byAzIDQgZml2ZSBzaXggNyA+b25lICYmCisJdGVzdF93cml0ZV9saW5lcyAxIHR3byAzIDQgZml2ZSBzaXggNyA+b25lICYmCiAJZ2l0IHJlcmVyZSAmJgogCWNhdCBvbmUgPmV4cGVjdCAmJgogCkBAIC0xMDQsMTQgKzEwNywxNCBAQAogCWdpdCByZXNldCAtLWhhcmQgJiYKIAogCWdpdCBjaGVja291dCAtYiBhZGRlciAmJgotCWNyZWF0ZV9maWxlIDEgMiAzIDQgNSA2IDcgPnRocmVlICYmCi0JY3JlYXRlX2ZpbGUgMSAyIDMgNCA1IDYgNyA+Zm91ciAmJgorCXRlc3Rfd3JpdGVfbGluZXMgMSAyIDMgNCA1IDYgNyA+dGhyZWUgJiYKKwl0ZXN0X3dyaXRlX2xpbmVzIDEgMiAzIDQgNSA2IDcgPmZvdXIgJiYKIAlnaXQgYWRkIHRocmVlIGZvdXIgJiYKIAlnaXQgY29tbWl0IC1tICJhZGQgdGhyZWUgYW5kIGZvdXIiICYmCiAKIAlnaXQgY2hlY2tvdXQgLWIgYW5vdGhlciBhZGRlcl4gJiYKLQljcmVhdGVfZmlsZSAxIDIgMyA0IDUgNiA3ID50aHJlZSAmJgotCWNyZWF0ZV9maWxlIDEgMiAzIGZvdXIgNSA2IDcgPmZvdXIgJiYKKwl0ZXN0X3dyaXRlX2xpbmVzIDEgMiAzIDQgNSA2IDcgPnRocmVlICYmCisJdGVzdF93cml0ZV9saW5lcyAxIDIgMyBmb3VyIDUgNiA3ID5mb3VyICYmCiAJZ2l0IGFkZCB0aHJlZSBmb3VyICYmCiAJZ2l0IGNvbW1pdCAtbSAiYWRkIHRocmVlIGFuZCBmb3VyIiAmJgogCkBAIC0xMjEsNyArMTI0LDcgQEAKIAlnaXQgY2hlY2tvdXQgYWRkZXJeMCAmJgogCXRlc3RfbXVzdF9mYWlsIGdpdCBtZXJnZSAtLW5vLWNvbW1pdCBhbm90aGVyICYmCiAJZ2l0IGxzLWZpbGVzIC1zID5leHBlY3QubHMgJiYKLQlnaXQgZGlmZiBIRUFEIHwgc2FuaXRpemVfY29uZmxpY3RlZF9kaWZmID5leHBlY3QuZGlmZgorCXByaW50X3Nhbml0aXplZF9jb25mbGljdGVkX2RpZmYgPmV4cGVjdC5kaWZmCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2FwcGx5IC0zIHdpdGggYWRkL2FkZCBjb25mbGljdCcgJwpAQCAtMTMxLDcgKzEzNCw3IEBACiAJdGVzdF9tdXN0X2ZhaWwgZ2l0IGFwcGx5IC0taW5kZXggLS0zd2F5IFAuZGlmZiAmJgogCSMgLi4uIGFuZCBsZWF2ZSBjb25mbGljdHMgaW4gdGhlIGluZGV4IGFuZCBpbiB0aGUgd29ya2luZyB0cmVlCiAJZ2l0IGxzLWZpbGVzIC1zID5hY3R1YWwubHMgJiYKLQlnaXQgZGlmZiBIRUFEIHwgc2FuaXRpemVfY29uZmxpY3RlZF9kaWZmID5hY3R1YWwuZGlmZiAmJgorCXByaW50X3Nhbml0aXplZF9jb25mbGljdGVkX2RpZmYgPmFjdHVhbC5kaWZmICYmCiAKIAkjIFRoZSByZXN1bHQgc2hvdWxkIHJlc2VtYmxlIHRoZSBjb3JyZXNwb25kaW5nIG1lcmdlCiAJdGVzdF9jbXAgZXhwZWN0LmxzIGFjdHVhbC5scyAmJgpkaWZmIC0tZ2l0IGEvdC90NDIwMi1sb2cuc2ggYi90L3Q0MjAyLWxvZy5zaAppbmRleCBlODAzYmE0Li5hYjBkMDIxIDEwMDc1NQotLS0gYS90L3Q0MjAyLWxvZy5zaAorKysgYi90L3Q0MjAyLWxvZy5zaApAQCAtNjY3LDcgKzY2Nyw3IEBACiAqIHwgfCBmaWZ0aAogKiB8IHwgZm91cnRoCiB8LyAvCi0qIHwgdGhpcmQKKyogLyB0aGlyZAogfC8KICogc2Vjb25kCiAqIGluaXRpYWwKZGlmZiAtLWdpdCBhL3QvdDQyMDMtbWFpbG1hcC5zaCBiL3QvdDQyMDMtbWFpbG1hcC5zaAppbmRleCA5MThhZGE2Li41ODZjM2E4IDEwMDc1NQotLS0gYS90L3Q0MjAzLW1haWxtYXAuc2gKKysrIGIvdC90NDIwMy1tYWlsbWFwLnNoCkBAIC0xMyw4ICsxMyw4IEBACiB9CiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3Mgc2V0dXAgJwotCWNhdCA+Y29udGFjdHMgPDwtXEVPRiAmJgotCUEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CisJY2F0ID5jb250YWN0cyA8PC0gRU9GICYmCisJJEdJVF9BVVRIT1JfTkFNRSA8JEdJVF9BVVRIT1JfRU1BSUw+CiAJbmljazEgPGJ1Z3NAY29tcGFueS54eD4KIAlFT0YKIApAQCAtMzMsMTkgKzMzLDE5IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrLW1haWxtYXAgYXJndW1lbnRzJyAnCi0JY2F0ID5leHBlY3QgPDwtXEVPRiAmJgotCUEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CisJY2F0ID5leHBlY3QgPDwtIEVPRiAmJgorCSRHSVRfQVVUSE9SX05BTUUgPCRHSVRfQVVUSE9SX0VNQUlMPgogCW5pY2sxIDxidWdzQGNvbXBhbnkueHg+CiAJRU9GCiAJZ2l0IGNoZWNrLW1haWxtYXAgXAotCQkiQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4iIFwKKwkJIiRHSVRfQVVUSE9SX05BTUUgPCRHSVRfQVVUSE9SX0VNQUlMPiIgXAogCQkibmljazEgPGJ1Z3NAY29tcGFueS54eD4iID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2NoZWNrLW1haWxtYXAgLS1zdGRpbicgJwotCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKLQlBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgorCWNhdCA+ZXhwZWN0IDw8LSBFT0YgJiYKKwkkR0lUX0FVVEhPUl9OQU1FIDwkR0lUX0FVVEhPUl9FTUFJTD4KIAluaWNrMSA8YnVnc0Bjb21wYW55Lnh4PgogCUVPRgogCWdpdCBjaGVjay1tYWlsbWFwIC0tc3RkaW4gPGNvbnRhY3RzID5hY3R1YWwgJiYKQEAgLTY2LDggKzY2LDggQEAKIAl0ZXN0X211c3RfZmFpbCBnaXQgY2hlY2stbWFpbG1hcCBib2d1cwogJwogCi1jYXQgPmV4cGVjdCA8PFxFT0YKLUEgVSBUaG9yICgxKToKK2NhdCA+ZXhwZWN0IDw8IEVPRgorJEdJVF9BVVRIT1JfTkFNRSAoMSk6CiAgICAgICBpbml0aWFsCiAKIG5pY2sxICgxKToKQEAgLTkwLDcgKzkwLDcgQEAKIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWZhdWx0IC5tYWlsbWFwJyAnCi0JZWNobyAiUmVwbyBHdXkgPGF1dGhvckBleGFtcGxlLmNvbT4iID4gLm1haWxtYXAgJiYKKwllY2hvICJSZXBvIEd1eSA8JEdJVF9BVVRIT1JfRU1BSUw+IiA+IC5tYWlsbWFwICYmCiAJZ2l0IHNob3J0bG9nIEhFQUQgPmFjdHVhbCAmJgogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKQEAgLTEyMiw3ICsxMjIsNyBAQAogCiBFT0YKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ21haWxtYXAuZmlsZSBvdmVycmlkZScgJwotCWVjaG8gIkV4dGVybmFsIEd1eSA8YXV0aG9yQGV4YW1wbGUuY29tPiIgPj4gaW50ZXJuYWxfbWFpbG1hcC8ubWFpbG1hcCAmJgorCWVjaG8gIkV4dGVybmFsIEd1eSA8JEdJVF9BVVRIT1JfRU1BSUw+IiA+PiBpbnRlcm5hbF9tYWlsbWFwLy5tYWlsbWFwICYmCiAJZ2l0IGNvbmZpZyBtYWlsbWFwLmZpbGUgaW50ZXJuYWxfbWFpbG1hcC8ubWFpbG1hcCAmJgogCWdpdCBzaG9ydGxvZyBIRUFEID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCkBAIC0xNzgsOCArMTc4LDggQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLWNhdCA+ZXhwZWN0IDw8XEVPRgotQSBVIFRob3IgKDEpOgorY2F0ID5leHBlY3QgPDwgRU9GCiskR0lUX0FVVEhPUl9OQU1FICgxKToKICAgICAgIGluaXRpYWwKIAogbmljazEgKDEpOgpAQCAtMTk1LDE4ICsxOTUsMTggQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIG1haWxtYXAgYmxvYiB0ZXN0cycgJwogCWdpdCBjaGVja291dCAtYiBtYXAgJiYKIAl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCBjaGVja291dCBtYXN0ZXIiICYmCi0JY2F0ID5qdXN0LWJ1Z3MgPDwtXEVPRiAmJgorCWNhdCA+anVzdC1idWdzIDw8LSBFT0YgJiYKIAlCbG9iIEd1eSA8YnVnc0Bjb21wYW55Lnh4PgogCUVPRgotCWNhdCA+Ym90aCA8PC1cRU9GICYmCi0JQmxvYiBHdXkgPGF1dGhvckBleGFtcGxlLmNvbT4KKwljYXQgPmJvdGggPDwtIEVPRiAmJgorCUJsb2IgR3V5IDwkR0lUX0FVVEhPUl9FTUFJTD4KIAlCbG9iIEd1eSA8YnVnc0Bjb21wYW55Lnh4PgogCUVPRgotCXByaW50ZiAiVHJpY2t5IEd1eSA8YXV0aG9yQGV4YW1wbGUuY29tPiIgPm5vLW5ld2xpbmUgJiYKKwlwcmludGYgIlRyaWNreSBHdXkgPCRHSVRfQVVUSE9SX0VNQUlMPiIgPm5vLW5ld2xpbmUgJiYKIAlnaXQgYWRkIGp1c3QtYnVncyBib3RoIG5vLW5ld2xpbmUgJiYKIAlnaXQgY29tbWl0IC1tICJteSBtYWlsbWFwcyIgJiYKLQllY2hvICJSZXBvIEd1eSA8YXV0aG9yQGV4YW1wbGUuY29tPiIgPi5tYWlsbWFwICYmCi0JZWNobyAiSW50ZXJuYWwgR3V5IDxhdXRob3JAZXhhbXBsZS5jb20+IiA+aW50ZXJuYWwubWFwCisJZWNobyAiUmVwbyBHdXkgPCRHSVRfQVVUSE9SX0VNQUlMPiIgPi5tYWlsbWFwICYmCisJZWNobyAiSW50ZXJuYWwgR3V5IDwkR0lUX0FVVEhPUl9FTUFJTD4iID5pbnRlcm5hbC5tYXAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnbWFpbG1hcC5ibG9iIHNldCcgJwpAQCAtMjY2LDEyICsyNjYsMTIgQEAKIAlnaXQgaW5pdCBub24tYmFyZSAmJgogCSgKIAkJY2Qgbm9uLWJhcmUgJiYKLQkJdGVzdF9jb21taXQgb25lIC5tYWlsbWFwICJGYWtlIE5hbWUgPGF1dGhvckBleGFtcGxlLmNvbT4iICYmCisJCXRlc3RfY29tbWl0IG9uZSAubWFpbG1hcCAiRmFrZSBOYW1lIDwkR0lUX0FVVEhPUl9FTUFJTD4iICYmCiAJCWVjaG8gIiAgICAgMQlGYWtlIE5hbWUiID5leHBlY3QgJiYKIAkJZ2l0IHNob3J0bG9nIC1ucyBIRUFEID5hY3R1YWwgJiYKIAkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgogCQlybSAubWFpbG1hcCAmJgotCQllY2hvICIgICAgIDEJQSBVIFRob3IiID5leHBlY3QgJiYKKwkJZWNobyAiICAgICAxCSRHSVRfQVVUSE9SX05BTUUiID5leHBlY3QgJiYKIAkJZ2l0IHNob3J0bG9nIC1ucyBIRUFEID5hY3R1YWwgJiYKIAkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogCSkKQEAgLTMwNSwyNiArMzA1LDI2IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NpbmdsZS1jaGFyYWN0ZXIgbmFtZScgJwotCWVjaG8gIiAgICAgMQlBIDxhdXRob3JAZXhhbXBsZS5jb20+IiA+ZXhwZWN0ICYmCisJZWNobyAiICAgICAxCUEgPCRHSVRfQVVUSE9SX0VNQUlMPiIgPmV4cGVjdCAmJgogCWVjaG8gIiAgICAgMQluaWNrMSA8YnVnc0Bjb21wYW55Lnh4PiIgPj5leHBlY3QgJiYKLQllY2hvICJBIDxhdXRob3JAZXhhbXBsZS5jb20+IiA+Lm1haWxtYXAgJiYKKwllY2hvICJBIDwkR0lUX0FVVEhPUl9FTUFJTD4iID4ubWFpbG1hcCAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLm1haWxtYXAiICYmCiAJZ2l0IHNob3J0bG9nIC1lcyBIRUFEID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3ByZXNlcnZlIGNhbm9uaWNhbCBlbWFpbCBjYXNlJyAnCi0JZWNobyAiICAgICAxCUEgVSBUaG9yIDxBVVRIT1JAZXhhbXBsZS5jb20+IiA+ZXhwZWN0ICYmCisJZWNobyAiICAgICAxCSRHSVRfQVVUSE9SX05BTUUgPEFVVEhPUkBleGFtcGxlLmNvbT4iID5leHBlY3QgJiYKIAllY2hvICIgICAgIDEJbmljazEgPGJ1Z3NAY29tcGFueS54eD4iID4+ZXhwZWN0ICYmCi0JZWNobyAiPEFVVEhPUkBleGFtcGxlLmNvbT4gPGF1dGhvckBleGFtcGxlLmNvbT4iID4ubWFpbG1hcCAmJgorCWVjaG8gIjxBVVRIT1JAZXhhbXBsZS5jb20+IDwkR0lUX0FVVEhPUl9FTUFJTD4iID4ubWFpbG1hcCAmJgogCXRlc3Rfd2hlbl9maW5pc2hlZCAicm0gLm1haWxtYXAiICYmCiAJZ2l0IHNob3J0bG9nIC1lcyBIRUFEID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKICMgRXh0ZW5kZWQgbWFpbG1hcCBjb25maWd1cmF0aW9ucyBzaG91bGQgZ2l2ZSB1cyB0aGUgZm9sbG93aW5nIG91dHB1dCBmb3Igc2hvcnRsb2cKLWNhdCA+ZXhwZWN0IDw8XEVPRgotQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4gKDEpOgorY2F0ID5leHBlY3QgPDwgRU9GCiskR0lUX0FVVEhPUl9OQU1FIDwkR0lUX0FVVEhPUl9FTUFJTD4gKDEpOgogICAgICAgaW5pdGlhbAogCiBDVE8gPGN0b0Bjb21wYW55Lnh4PiAoMSk6CkBAIC0zNzAsNyArMzcwLDcgQEAKIAlnaXQgY29tbWl0IC0tYXV0aG9yICJDVE8gPGN0b0Bjb29tcGFueS54eD4iIC1tIHNldmVudGggJiYKIAogCW1rZGlyIC1wIGludGVybmFsX21haWxtYXAgJiYKLQllY2hvICJDb21taXR0ZWQgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4iID4gaW50ZXJuYWxfbWFpbG1hcC8ubWFpbG1hcCAmJgorCWVjaG8gIkNvbW1pdHRlZCA8JEdJVF9DT01NSVRURVJfRU1BSUw+IiA+IGludGVybmFsX21haWxtYXAvLm1haWxtYXAgJiYKIAllY2hvICI8Y3RvQGNvbXBhbnkueHg+ICAgICAgICAgICAgICAgICAgICAgICA8Y3RvQGNvb21wYW55Lnh4PiIgPj4gaW50ZXJuYWxfbWFpbG1hcC8ubWFpbG1hcCAmJgogCWVjaG8gIlNvbWUgRHVkZSA8c29tZUBkdWRlLnh4PiAgICAgICAgIG5pY2sxIDxidWdzQGNvbXBhbnkueHg+IiA+PiBpbnRlcm5hbF9tYWlsbWFwLy5tYWlsbWFwICYmCiAJZWNobyAiT3RoZXIgQXV0aG9yIDxvdGhlckBhdXRob3IueHg+ICAgbmljazIgPGJ1Z3NAY29tcGFueS54eD4iID4+IGludGVybmFsX21haWxtYXAvLm1haWxtYXAgJiYKQEAgLTM4NCwyNyArMzg0LDI3IEBACiAnCiAKICMgZ2l0IGxvZyB3aXRoIC0tcHJldHR5IGZvcm1hdCB3aGljaCB1c2VzIHRoZSBuYW1lIGFuZCBlbWFpbCBtYWlsbWFwIHBsYWNlbWFya2VycwotY2F0ID5leHBlY3QgPDxcRU9GCitjYXQgPmV4cGVjdCA8PCBFT0YKIEF1dGhvciBDVE8gPGN0b0Bjb29tcGFueS54eD4gbWFwcyB0byBDVE8gPGN0b0Bjb21wYW55Lnh4PgotQ29tbWl0dGVyIEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4gbWFwcyB0byBDb21taXR0ZWQgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0NvbW1pdHRlciAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4gbWFwcyB0byBDb21taXR0ZWQgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgogCiBBdXRob3IgY2xhdXMgPG1lQGNvbXBhbnkueHg+IG1hcHMgdG8gU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KLUNvbW1pdHRlciBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+IG1hcHMgdG8gQ29tbWl0dGVkIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitDb21taXR0ZXIgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IG1hcHMgdG8gQ29tbWl0dGVkIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4KIAogQXV0aG9yIHNhbnRhIDxtZUBjb21wYW55Lnh4PiBtYXBzIHRvIFNhbnRhIENsYXVzIDxzYW50YS5jbGF1c0Bub3J0aHBvbGUueHg+Ci1Db21taXR0ZXIgQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPiBtYXBzIHRvIENvbW1pdHRlZCA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorQ29tbWl0dGVyICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPiBtYXBzIHRvIENvbW1pdHRlZCA8JEdJVF9DT01NSVRURVJfRU1BSUw+CiAKIEF1dGhvciBuaWNrMiA8bmljazJAY29tcGFueS54eD4gbWFwcyB0byBPdGhlciBBdXRob3IgPG90aGVyQGF1dGhvci54eD4KLUNvbW1pdHRlciBDIE8gTWl0dGVyIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+IG1hcHMgdG8gQ29tbWl0dGVkIDxjb21taXR0ZXJAZXhhbXBsZS5jb20+CitDb21taXR0ZXIgJEdJVF9DT01NSVRURVJfTkFNRSA8JEdJVF9DT01NSVRURVJfRU1BSUw+IG1hcHMgdG8gQ29tbWl0dGVkIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4KIAogQXV0aG9yIG5pY2syIDxidWdzQGNvbXBhbnkueHg+IG1hcHMgdG8gT3RoZXIgQXV0aG9yIDxvdGhlckBhdXRob3IueHg+Ci1Db21taXR0ZXIgQyBPIE1pdHRlciA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPiBtYXBzIHRvIENvbW1pdHRlZCA8Y29tbWl0dGVyQGV4YW1wbGUuY29tPgorQ29tbWl0dGVyICRHSVRfQ09NTUlUVEVSX05BTUUgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPiBtYXBzIHRvIENvbW1pdHRlZCA8JEdJVF9DT01NSVRURVJfRU1BSUw+CiAKIEF1dGhvciBuaWNrMSA8YnVnc0Bjb21wYW55Lnh4PiBtYXBzIHRvIFNvbWUgRHVkZSA8c29tZUBkdWRlLnh4PgotQ29tbWl0dGVyIEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4gbWFwcyB0byBDb21taXR0ZWQgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0NvbW1pdHRlciAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4gbWFwcyB0byBDb21taXR0ZWQgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgogCi1BdXRob3IgQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4gbWFwcyB0byBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgotQ29tbWl0dGVyIEMgTyBNaXR0ZXIgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4gbWFwcyB0byBDb21taXR0ZWQgPGNvbW1pdHRlckBleGFtcGxlLmNvbT4KK0F1dGhvciAkR0lUX0FVVEhPUl9OQU1FIDwkR0lUX0FVVEhPUl9FTUFJTD4gbWFwcyB0byAkR0lUX0FVVEhPUl9OQU1FIDwkR0lUX0FVVEhPUl9FTUFJTD4KK0NvbW1pdHRlciAkR0lUX0NPTU1JVFRFUl9OQU1FIDwkR0lUX0NPTU1JVFRFUl9FTUFJTD4gbWFwcyB0byBDb21taXR0ZWQgPCRHSVRfQ09NTUlUVEVSX0VNQUlMPgogRU9GCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ0xvZyBvdXRwdXQgKGNvbXBsZXggbWFwcGluZyknICcKQEAgLTQxMiwxNCArNDEyLDQyIEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCi1jYXQgPmV4cGVjdCA8PFxFT0YKK2NhdCA+ZXhwZWN0IDw8IEVPRgorQXV0aG9yIGVtYWlsIGN0b0Bjb29tcGFueS54eCBoYXMgbG9jYWwtcGFydCBjdG8KK0NvbW1pdHRlciBlbWFpbCAkR0lUX0NPTU1JVFRFUl9FTUFJTCBoYXMgbG9jYWwtcGFydCAkVEVTVF9DT01NSVRURVJfTE9DQUxOQU1FCisKK0F1dGhvciBlbWFpbCBtZUBjb21wYW55Lnh4IGhhcyBsb2NhbC1wYXJ0IG1lCitDb21taXR0ZXIgZW1haWwgJEdJVF9DT01NSVRURVJfRU1BSUwgaGFzIGxvY2FsLXBhcnQgJFRFU1RfQ09NTUlUVEVSX0xPQ0FMTkFNRQorCitBdXRob3IgZW1haWwgbWVAY29tcGFueS54eCBoYXMgbG9jYWwtcGFydCBtZQorQ29tbWl0dGVyIGVtYWlsICRHSVRfQ09NTUlUVEVSX0VNQUlMIGhhcyBsb2NhbC1wYXJ0ICRURVNUX0NPTU1JVFRFUl9MT0NBTE5BTUUKKworQXV0aG9yIGVtYWlsIG5pY2syQGNvbXBhbnkueHggaGFzIGxvY2FsLXBhcnQgbmljazIKK0NvbW1pdHRlciBlbWFpbCAkR0lUX0NPTU1JVFRFUl9FTUFJTCBoYXMgbG9jYWwtcGFydCAkVEVTVF9DT01NSVRURVJfTE9DQUxOQU1FCisKK0F1dGhvciBlbWFpbCBidWdzQGNvbXBhbnkueHggaGFzIGxvY2FsLXBhcnQgYnVncworQ29tbWl0dGVyIGVtYWlsICRHSVRfQ09NTUlUVEVSX0VNQUlMIGhhcyBsb2NhbC1wYXJ0ICRURVNUX0NPTU1JVFRFUl9MT0NBTE5BTUUKKworQXV0aG9yIGVtYWlsIGJ1Z3NAY29tcGFueS54eCBoYXMgbG9jYWwtcGFydCBidWdzCitDb21taXR0ZXIgZW1haWwgJEdJVF9DT01NSVRURVJfRU1BSUwgaGFzIGxvY2FsLXBhcnQgJFRFU1RfQ09NTUlUVEVSX0xPQ0FMTkFNRQorCitBdXRob3IgZW1haWwgYXV0aG9yQGV4YW1wbGUuY29tIGhhcyBsb2NhbC1wYXJ0IGF1dGhvcgorQ29tbWl0dGVyIGVtYWlsICRHSVRfQ09NTUlUVEVSX0VNQUlMIGhhcyBsb2NhbC1wYXJ0ICRURVNUX0NPTU1JVFRFUl9MT0NBTE5BTUUKK0VPRgorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdMb2cgb3V0cHV0IChsb2NhbC1wYXJ0IGVtYWlsIGFkZHJlc3MpJyAnCisJZ2l0IGxvZyAtLXByZXR0eT1mb3JtYXQ6IkF1dGhvciBlbWFpbCAlYWUgaGFzIGxvY2FsLXBhcnQgJWFsJW5Db21taXR0ZXIgZW1haWwgJWNlIGhhcyBsb2NhbC1wYXJ0ICVjbCVuIiA+YWN0dWFsICYmCisJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAorJworCitjYXQgPmV4cGVjdCA8PCBFT0YKIEF1dGhvcjogQ1RPIDxjdG9AY29tcGFueS54eD4KIEF1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KIEF1dGhvcjogU2FudGEgQ2xhdXMgPHNhbnRhLmNsYXVzQG5vcnRocG9sZS54eD4KIEF1dGhvcjogT3RoZXIgQXV0aG9yIDxvdGhlckBhdXRob3IueHg+CiBBdXRob3I6IE90aGVyIEF1dGhvciA8b3RoZXJAYXV0aG9yLnh4PgogQXV0aG9yOiBTb21lIER1ZGUgPHNvbWVAZHVkZS54eD4KLUF1dGhvcjogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KK0F1dGhvcjogJEdJVF9BVVRIT1JfTkFNRSA8JEdJVF9BVVRIT1JfRU1BSUw+CiBFT0YKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnTG9nIG91dHB1dCB3aXRoIC0tdXNlLW1haWxtYXAnICcKQEAgLTQyNywxNCArNDU1LDE0IEBACiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbAogJwogCi1jYXQgPmV4cGVjdCA8PFxFT0YKK2NhdCA+ZXhwZWN0IDw8IEVPRgogQXV0aG9yOiBDVE8gPGN0b0Bjb21wYW55Lnh4PgogQXV0aG9yOiBTYW50YSBDbGF1cyA8c2FudGEuY2xhdXNAbm9ydGhwb2xlLnh4PgogQXV0aG9yOiBTYW50YSBDbGF1cyA8c2FudGEuY2xhdXNAbm9ydGhwb2xlLnh4PgogQXV0aG9yOiBPdGhlciBBdXRob3IgPG90aGVyQGF1dGhvci54eD4KIEF1dGhvcjogT3RoZXIgQXV0aG9yIDxvdGhlckBhdXRob3IueHg+CiBBdXRob3I6IFNvbWUgRHVkZSA8c29tZUBkdWRlLnh4PgotQXV0aG9yOiBBIFUgVGhvciA8YXV0aG9yQGV4YW1wbGUuY29tPgorQXV0aG9yOiAkR0lUX0FVVEhPUl9OQU1FIDwkR0lUX0FVVEhPUl9FTUFJTD4KIEVPRgogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdMb2cgb3V0cHV0IHdpdGggbG9nLm1haWxtYXAnICcKQEAgLTQ0MywyOCArNDcxLDI4IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZy5tYWlsbWFwPWZhbHNlIGRpc2FibGVzIG1haWxtYXAnICcKLQljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJY2F0ID5leHBlY3QgPDwtIEVPRiAmJgogCUF1dGhvcjogQ1RPIDxjdG9AY29vbXBhbnkueHg+CiAJQXV0aG9yOiBjbGF1cyA8bWVAY29tcGFueS54eD4KIAlBdXRob3I6IHNhbnRhIDxtZUBjb21wYW55Lnh4PgogCUF1dGhvcjogbmljazIgPG5pY2syQGNvbXBhbnkueHg+CiAJQXV0aG9yOiBuaWNrMiA8YnVnc0Bjb21wYW55Lnh4PgogCUF1dGhvcjogbmljazEgPGJ1Z3NAY29tcGFueS54eD4KLQlBdXRob3I6IEEgVSBUaG9yIDxhdXRob3JAZXhhbXBsZS5jb20+CisJQXV0aG9yOiAkR0lUX0FVVEhPUl9OQU1FIDwkR0lUX0FVVEhPUl9FTUFJTD4KIAlFT0YKIAlnaXQgLWMgbG9nLm1haWxtYXA9RmFsc2UgbG9nIHwgZ3JlcCBBdXRob3IgPiBhY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJy0tbm8tdXNlLW1haWxtYXAgZGlzYWJsZXMgbWFpbG1hcCcgJwotCWNhdCA+ZXhwZWN0IDw8LVxFT0YgJiYKKwljYXQgPmV4cGVjdCA8PC0gRU9GICYmCiAJQXV0aG9yOiBDVE8gPGN0b0Bjb29tcGFueS54eD4KIAlBdXRob3I6IGNsYXVzIDxtZUBjb21wYW55Lnh4PgogCUF1dGhvcjogc2FudGEgPG1lQGNvbXBhbnkueHg+CiAJQXV0aG9yOiBuaWNrMiA8bmljazJAY29tcGFueS54eD4KIAlBdXRob3I6IG5pY2syIDxidWdzQGNvbXBhbnkueHg+CiAJQXV0aG9yOiBuaWNrMSA8YnVnc0Bjb21wYW55Lnh4PgotCUF1dGhvcjogQSBVIFRob3IgPGF1dGhvckBleGFtcGxlLmNvbT4KKwlBdXRob3I6ICRHSVRfQVVUSE9SX05BTUUgPCRHSVRfQVVUSE9SX0VNQUlMPgogCUVPRgogCWdpdCBsb2cgLS1uby11c2UtbWFpbG1hcCB8IGdyZXAgQXV0aG9yID4gYWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbApAQCAtNTAwLDggKzUyOCw4IEBACiAnCiAKICMgZ2l0IGJsYW1lCi1jYXQgPmV4cGVjdCA8PFxFT0YKLV5PQkpJIChBIFUgVGhvciAgICAgREFURSAxKSBvbmUKK2NhdCA+ZXhwZWN0IDw8RU9GCiteT0JKSSAoJEdJVF9BVVRIT1JfTkFNRSAgICAgREFURSAxKSBvbmUKIE9CSklEIChTb21lIER1ZGUgICAgREFURSAyKSB0d28KIE9CSklEIChPdGhlciBBdXRob3IgREFURSAzKSB0aHJlZQogT0JKSUQgKE90aGVyIEF1dGhvciBEQVRFIDQpIGZvdXIKZGlmZiAtLWdpdCBhL3QvdDQyMDUtbG9nLXByZXR0eS1mb3JtYXRzLnNoIGIvdC90NDIwNS1sb2ctcHJldHR5LWZvcm1hdHMuc2gKaW5kZXggZjQyYTY5Zi4uMmYyNTFiMiAxMDA3NTUKLS0tIGEvdC90NDIwNS1sb2ctcHJldHR5LWZvcm1hdHMuc2gKKysrIGIvdC90NDIwNS1sb2ctcHJldHR5LWZvcm1hdHMuc2gKQEAgLTY0MCw3ICs2NDAsNyBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnJSh0cmFpbGVyczprZXk9bm9uZXhpc3RhbnQpIGJlY29tZXMgZW1wdHknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJyUodHJhaWxlcnM6a2V5PW5vbmV4aXN0ZW50KSBiZWNvbWVzIGVtcHR5JyAnCiAJZ2l0IGxvZyAtLW5vLXdhbGsgLS1wcmV0dHk9InglKHRyYWlsZXJzOmtleT1OYWNrZWQtYnkpeCIgPmFjdHVhbCAmJgogCWVjaG8gInh4IiA+ZXhwZWN0ICYmCiAJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbApkaWZmIC0tZ2l0IGEvdC90NDIxMy1sb2ctdGFiZXhwYW5kLnNoIGIvdC90NDIxMy1sb2ctdGFiZXhwYW5kLnNoCmluZGV4IDdmOTBmNTguLjUzYTRhZjMgMTAwNzU1Ci0tLSBhL3QvdDQyMTMtbG9nLXRhYmV4cGFuZC5zaAorKysgYi90L3Q0MjEzLWxvZy10YWJleHBhbmQuc2gKQEAgLTM2LDcgKzM2LDcgQEAKIAllc2FjCiAKIAkjIFByZWZpeCB0aGUgb3V0cHV0IHdpdGggdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMsIGFuZAotCSMgcmVwbGFjZSBTUCB3aXRoIGEgZG90IGJvdGggaW4gdGhlIGV4cGVjdGUgYW5kIGFjdHVhbCBvdXRwdXQKKwkjIHJlcGxhY2UgU1Agd2l0aCBhIGRvdCBib3RoIGluIHRoZSBleHBlY3RlZCBhbmQgYWN0dWFsIG91dHB1dAogCSMgc28gdGhhdCB0ZXN0X2NtcCB3b3VsZCBzaG93IHRoZSBkaWZmZXJlbmNlIHRvZ2V0aGVyIHdpdGggdGhlCiAJIyBicmVha2FnZSBpbiBhIHdheSBlYXNpZXIgdG8gY29uc3VtZSBieSB0aGUgZGVidWdnaW5nIHVzZXIuCiAJewpkaWZmIC0tZ2l0IGEvdC90NDIxNC1sb2ctZ3JhcGgtb2N0b3B1cy5zaCBiL3QvdDQyMTQtbG9nLWdyYXBoLW9jdG9wdXMuc2gKaW5kZXggM2FlOGU1MS4uNDBkMjdkYiAxMDA3NTUKLS0tIGEvdC90NDIxNC1sb2ctZ3JhcGgtb2N0b3B1cy5zaAorKysgYi90L3Q0MjE0LWxvZy1ncmFwaC1vY3RvcHVzLnNoCkBAIC0yNiwxNSArMjYsMTQgQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyYXBoIHdpdGggdHJpY2t5IG9jdG9wdXMgbWVyZ2UsIG5vIGNvbG9yJyAnCiAJY2F0ID5leHBlY3QudW5jb2xvcmVkIDw8LVxFT0YgJiYKIAkqIGxlZnQKLQl8ICotLS0uICAgb2N0b3B1cy1tZXJnZQotCXwgfFwgXCBcCi0JfC8gLyAvIC8KKwl8ICotLiAgIG9jdG9wdXMtbWVyZ2UKKwl8L3xcIFwKIAl8IHwgfCAqIDQKIAl8IHwgKiB8IDMKIAl8IHwgfC8KLQl8ICogfCAyCisJfCAqIC8gMgogCXwgfC8KLQkqIHwgMQorCSogLyAxCiAJfC8KIAkqIGluaXRpYWwKIAlFT0YKQEAgLTQ3LDE1ICs0NiwxNCBAQAogCXRlc3RfY29uZmlnIGxvZy5ncmFwaENvbG9ycyByZWQsZ3JlZW4seWVsbG93LGJsdWUsbWFnZW50YSxjeWFuICYmCiAJY2F0ID5leHBlY3QuY29sb3JzIDw8LVxFT0YgJiYKIAkqIGxlZnQKLQk8UkVEPnw8UkVTRVQ+ICo8QkxVRT4tPFJFU0VUPjxCTFVFPi08UkVTRVQ+PE1BR0VOVEE+LTxSRVNFVD48TUFHRU5UQT4uPFJFU0VUPiAgIG9jdG9wdXMtbWVyZ2UKLQk8UkVEPnw8UkVTRVQ+IDxSRUQ+fDxSRVNFVD48WUVMTE9XPlw8UkVTRVQ+IDxCTFVFPlw8UkVTRVQ+IDxNQUdFTlRBPlw8UkVTRVQ+Ci0JPFJFRD58PFJFU0VUPjxSRUQ+LzxSRVNFVD4gPFlFTExPVz4vPFJFU0VUPiA8QkxVRT4vPFJFU0VUPiA8TUFHRU5UQT4vPFJFU0VUPgorCTxSRUQ+fDxSRVNFVD4gKjxNQUdFTlRBPi08UkVTRVQ+PE1BR0VOVEE+LjxSRVNFVD4gICBvY3RvcHVzLW1lcmdlCisJPFJFRD58PFJFU0VUPjxSRUQ+LzxSRVNFVD48WUVMTE9XPnw8UkVTRVQ+PEJMVUU+XDxSRVNFVD4gPE1BR0VOVEE+XDxSRVNFVD4KIAk8UkVEPnw8UkVTRVQ+IDxZRUxMT1c+fDxSRVNFVD4gPEJMVUU+fDxSRVNFVD4gKiA0CiAJPFJFRD58PFJFU0VUPiA8WUVMTE9XPnw8UkVTRVQ+ICogPE1BR0VOVEE+fDxSRVNFVD4gMwogCTxSRUQ+fDxSRVNFVD4gPFlFTExPVz58PFJFU0VUPiA8TUFHRU5UQT58PFJFU0VUPjxNQUdFTlRBPi88UkVTRVQ+Ci0JPFJFRD58PFJFU0VUPiAqIDxNQUdFTlRBPnw8UkVTRVQ+IDIKKwk8UkVEPnw8UkVTRVQ+ICogPE1BR0VOVEE+LzxSRVNFVD4gMgogCTxSRUQ+fDxSRVNFVD4gPE1BR0VOVEE+fDxSRVNFVD48TUFHRU5UQT4vPFJFU0VUPgotCSogPE1BR0VOVEE+fDxSRVNFVD4gMQorCSogPE1BR0VOVEE+LzxSRVNFVD4gMQogCTxNQUdFTlRBPnw8UkVTRVQ+PE1BR0VOVEE+LzxSRVNFVD4KIAkqIGluaXRpYWwKIAlFT0YKQEAgLTc0LDkgKzcyLDkgQEAKIAl8IHwgfCAqIDQKIAl8IHwgKiB8IDMKIAl8IHwgfC8KLQl8ICogfCAyCisJfCAqIC8gMgogCXwgfC8KLQkqIHwgMQorCSogLyAxCiAJfC8KIAkqIGluaXRpYWwKIAlFT0YKQEAgLTkyLDkgKzkwLDkgQEAKIAk8UkVEPnw8UkVTRVQ+IDxHUkVFTj58PFJFU0VUPiA8WUVMTE9XPnw8UkVTRVQ+ICogNAogCTxSRUQ+fDxSRVNFVD4gPEdSRUVOPnw8UkVTRVQ+ICogPEJMVUU+fDxSRVNFVD4gMwogCTxSRUQ+fDxSRVNFVD4gPEdSRUVOPnw8UkVTRVQ+IDxCTFVFPnw8UkVTRVQ+PEJMVUU+LzxSRVNFVD4KLQk8UkVEPnw8UkVTRVQ+ICogPEJMVUU+fDxSRVNFVD4gMgorCTxSRUQ+fDxSRVNFVD4gKiA8QkxVRT4vPFJFU0VUPiAyCiAJPFJFRD58PFJFU0VUPiA8QkxVRT58PFJFU0VUPjxCTFVFPi88UkVTRVQ+Ci0JKiA8QkxVRT58PFJFU0VUPiAxCisJKiA8QkxVRT4vPFJFU0VUPiAxCiAJPEJMVUU+fDxSRVNFVD48QkxVRT4vPFJFU0VUPgogCSogaW5pdGlhbAogCUVPRgpAQCAtMTEyLDkgKzExMCw5IEBACiAJfCB8IHwgKiA0CiAJfCB8ICogfCAzCiAJfCB8IHwvCi0JfCAqIHwgMgorCXwgKiAvIDIKIAl8IHwvCi0JKiB8IDEKKwkqIC8gMQogCXwvCiAJKiBpbml0aWFsCiAJRU9GCkBAIC0xMjMsNyArMTIxLDcgQEAKIAl0ZXN0X2NtcCBleHBlY3QudW5jb2xvcmVkIGFjdHVhbAogJwogCi10ZXN0X2V4cGVjdF9mYWlsdXJlICdsb2cgLS1ncmFwaCB3aXRoIG5vcm1hbCBvY3RvcHVzIGFuZCBjaGlsZCBtZXJnZSB3aXRoIGNvbG9ycycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tZ3JhcGggd2l0aCBub3JtYWwgb2N0b3B1cyBhbmQgY2hpbGQgbWVyZ2Ugd2l0aCBjb2xvcnMnICcKIAljYXQgPmV4cGVjdC5jb2xvcnMgPDwtXEVPRiAmJgogCSogYWZ0ZXItbWVyZ2UKIAkqPEJMVUU+LTxSRVNFVD48QkxVRT4tPFJFU0VUPjxNQUdFTlRBPi08UkVTRVQ+PE1BR0VOVEE+LjxSRVNFVD4gICBvY3RvcHVzLW1lcmdlCkBAIC0xMzEsOSArMTI5LDkgQEAKIAk8R1JFRU4+fDxSRVNFVD4gPFlFTExPVz58PFJFU0VUPiA8QkxVRT58PFJFU0VUPiAqIDQKIAk8R1JFRU4+fDxSRVNFVD4gPFlFTExPVz58PFJFU0VUPiAqIDxNQUdFTlRBPnw8UkVTRVQ+IDMKIAk8R1JFRU4+fDxSRVNFVD4gPFlFTExPVz58PFJFU0VUPiA8TUFHRU5UQT58PFJFU0VUPjxNQUdFTlRBPi88UkVTRVQ+Ci0JPEdSRUVOPnw8UkVTRVQ+ICogPE1BR0VOVEE+fDxSRVNFVD4gMgorCTxHUkVFTj58PFJFU0VUPiAqIDxNQUdFTlRBPi88UkVTRVQ+IDIKIAk8R1JFRU4+fDxSRVNFVD4gPE1BR0VOVEE+fDxSRVNFVD48TUFHRU5UQT4vPFJFU0VUPgotCSogPE1BR0VOVEE+fDxSRVNFVD4gMQorCSogPE1BR0VOVEE+LzxSRVNFVD4gMQogCTxNQUdFTlRBPnw8UkVTRVQ+PE1BR0VOVEE+LzxSRVNFVD4KIAkqIGluaXRpYWwKIAlFT0YKQEAgLTE0NywxNSArMTQ1LDE0IEBACiAJY2F0ID5leHBlY3QudW5jb2xvcmVkIDw8LVxFT0YgJiYKIAkqIGxlZnQKIAl8ICogYWZ0ZXItbWVyZ2UKLQl8ICotLS0uICAgb2N0b3B1cy1tZXJnZQotCXwgfFwgXCBcCi0JfC8gLyAvIC8KKwl8ICotLiAgIG9jdG9wdXMtbWVyZ2UKKwl8L3xcIFwKIAl8IHwgfCAqIDQKIAl8IHwgKiB8IDMKIAl8IHwgfC8KLQl8ICogfCAyCisJfCAqIC8gMgogCXwgfC8KLQkqIHwgMQorCSogLyAxCiAJfC8KIAkqIGluaXRpYWwKIAlFT0YKQEAgLTE2NCwyMCArMTYxLDE5IEBACiAJdGVzdF9jbXAgZXhwZWN0LnVuY29sb3JlZCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3RfZmFpbHVyZSAnbG9nIC0tZ3JhcGggd2l0aCB0cmlja3kgb2N0b3B1cyBtZXJnZSBhbmQgaXRzIGNoaWxkIHdpdGggY29sb3JzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1ncmFwaCB3aXRoIHRyaWNreSBvY3RvcHVzIG1lcmdlIGFuZCBpdHMgY2hpbGQgd2l0aCBjb2xvcnMnICcKIAl0ZXN0X2NvbmZpZyBsb2cuZ3JhcGhDb2xvcnMgcmVkLGdyZWVuLHllbGxvdyxibHVlLG1hZ2VudGEsY3lhbiAmJgogCWNhdCA+ZXhwZWN0LmNvbG9ycyA8PC1cRU9GICYmCiAJKiBsZWZ0CiAJPFJFRD58PFJFU0VUPiAqIGFmdGVyLW1lcmdlCi0JPFJFRD58PFJFU0VUPiAqPE1BR0VOVEE+LTxSRVNFVD48TUFHRU5UQT4tPFJFU0VUPjxDWUFOPi08UkVTRVQ+PENZQU4+LjxSRVNFVD4gICBvY3RvcHVzLW1lcmdlCi0JPFJFRD58PFJFU0VUPiA8UkVEPnw8UkVTRVQ+PEJMVUU+XDxSRVNFVD4gPE1BR0VOVEE+XDxSRVNFVD4gPENZQU4+XDxSRVNFVD4KLQk8UkVEPnw8UkVTRVQ+PFJFRD4vPFJFU0VUPiA8QkxVRT4vPFJFU0VUPiA8TUFHRU5UQT4vPFJFU0VUPiA8Q1lBTj4vPFJFU0VUPgorCTxSRUQ+fDxSRVNFVD4gKjxDWUFOPi08UkVTRVQ+PENZQU4+LjxSRVNFVD4gICBvY3RvcHVzLW1lcmdlCisJPFJFRD58PFJFU0VUPjxSRUQ+LzxSRVNFVD48QkxVRT58PFJFU0VUPjxNQUdFTlRBPlw8UkVTRVQ+IDxDWUFOPlw8UkVTRVQ+CiAJPFJFRD58PFJFU0VUPiA8QkxVRT58PFJFU0VUPiA8TUFHRU5UQT58PFJFU0VUPiAqIDQKIAk8UkVEPnw8UkVTRVQ+IDxCTFVFPnw8UkVTRVQ+ICogPENZQU4+fDxSRVNFVD4gMwogCTxSRUQ+fDxSRVNFVD4gPEJMVUU+fDxSRVNFVD4gPENZQU4+fDxSRVNFVD48Q1lBTj4vPFJFU0VUPgotCTxSRUQ+fDxSRVNFVD4gKiA8Q1lBTj58PFJFU0VUPiAyCisJPFJFRD58PFJFU0VUPiAqIDxDWUFOPi88UkVTRVQ+IDIKIAk8UkVEPnw8UkVTRVQ+IDxDWUFOPnw8UkVTRVQ+PENZQU4+LzxSRVNFVD4KLQkqIDxDWUFOPnw8UkVTRVQ+IDEKKwkqIDxDWUFOPi88UkVTRVQ+IDEKIAk8Q1lBTj58PFJFU0VUPjxDWUFOPi88UkVTRVQ+CiAJKiBpbml0aWFsCiAJRU9GCkBAIC0yMDksNyArMjA1LDcgQEAKIAl0ZXN0X2NtcCBleHBlY3QudW5jb2xvcmVkIGFjdHVhbAogJwogCi10ZXN0X2V4cGVjdF9mYWlsdXJlICdsb2cgLS1ncmFwaCB3aXRoIGNyb3Nzb3ZlciBpbiBvY3RvcHVzIG1lcmdlIHdpdGggY29sb3JzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1ncmFwaCB3aXRoIGNyb3Nzb3ZlciBpbiBvY3RvcHVzIG1lcmdlIHdpdGggY29sb3JzJyAnCiAJdGVzdF9jb25maWcgbG9nLmdyYXBoQ29sb3JzIHJlZCxncmVlbix5ZWxsb3csYmx1ZSxtYWdlbnRhLGN5YW4gJiYKIAljYXQgPmV4cGVjdC5jb2xvcnMgPDwtXEVPRiAmJgogCSogYWZ0ZXItNApAQCAtMjU3LDcgKzI1Myw3IEBACiAJdGVzdF9jbXAgZXhwZWN0LnVuY29sb3JlZCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3RfZmFpbHVyZSAnbG9nIC0tZ3JhcGggd2l0aCBjcm9zc292ZXIgaW4gb2N0b3B1cyBtZXJnZSBhbmQgaXRzIGNoaWxkIHdpdGggY29sb3JzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1ncmFwaCB3aXRoIGNyb3Nzb3ZlciBpbiBvY3RvcHVzIG1lcmdlIGFuZCBpdHMgY2hpbGQgd2l0aCBjb2xvcnMnICcKIAl0ZXN0X2NvbmZpZyBsb2cuZ3JhcGhDb2xvcnMgcmVkLGdyZWVuLHllbGxvdyxibHVlLG1hZ2VudGEsY3lhbiAmJgogCWNhdCA+ZXhwZWN0LmNvbG9ycyA8PC1cRU9GICYmCiAJKiBhZnRlci00CkBAIC0zNTMsNyArMzQ5LDcgQEAKIAl0ZXN0X2NtcCBleHBlY3QudW5jb2xvcmVkIGFjdHVhbAogJwogCi10ZXN0X2V4cGVjdF9mYWlsdXJlICdsb2cgLS1ncmFwaCB3aXRoIHVucmVsYXRlZCBjb21taXQgYW5kIG9jdG9wdXMgY2hpbGQgd2l0aCBjb2xvcnMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyYXBoIHdpdGggdW5yZWxhdGVkIGNvbW1pdCBhbmQgb2N0b3B1cyBjaGlsZCB3aXRoIGNvbG9ycycgJwogCXRlc3RfY29uZmlnIGxvZy5ncmFwaENvbG9ycyByZWQsZ3JlZW4seWVsbG93LGJsdWUsbWFnZW50YSxjeWFuICYmCiAJY2F0ID5leHBlY3QuY29sb3JzIDw8LVxFT0YgJiYKIAkqIGFmdGVyLWluaXRpYWwKZGlmZiAtLWdpdCBhL3QvdDQyMTUtbG9nLXNrZXdlZC1tZXJnZXMuc2ggYi90L3Q0MjE1LWxvZy1za2V3ZWQtbWVyZ2VzLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE4NzA5YTcKLS0tIC9kZXYvbnVsbAorKysgYi90L3Q0MjE1LWxvZy1za2V3ZWQtbWVyZ2VzLnNoCkBAIC0wLDAgKzEsMjQzIEBACisjIS9iaW4vc2gKKwordGVzdF9kZXNjcmlwdGlvbj0nZ2l0IGxvZyAtLWdyYXBoIG9mIHNrZXdlZCBtZXJnZXMnCisKKy4gLi90ZXN0LWxpYi5zaAorCitjaGVja19ncmFwaCAoKSB7CisJY2F0ID5leHBlY3QgJiYKKwlnaXQgbG9nIC0tZ3JhcGggLS1wcmV0dHk9dGZvcm1hdDolcyAiJEAiID5hY3R1YWwucmF3ICYmCisJc2VkICJzLyAqJC8vIiBhY3R1YWwucmF3ID5hY3R1YWwgJiYKKwl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyYXBoIHdpdGggbWVyZ2UgZnVzaW5nIHdpdGggaXRzIGxlZnQgYW5kIHJpZ2h0IG5laWdoYm9ycycgJworCWdpdCBjaGVja291dCAtLW9ycGhhbiBfcCAmJgorCXRlc3RfY29tbWl0IEEgJiYKKwl0ZXN0X2NvbW1pdCBCICYmCisJZ2l0IGNoZWNrb3V0IC1iIF9xIEBeICYmIHRlc3RfY29tbWl0IEMgJiYKKwlnaXQgY2hlY2tvdXQgLWIgX3IgQF4gJiYgdGVzdF9jb21taXQgRCAmJgorCWdpdCBjaGVja291dCBfcCAmJiBnaXQgbWVyZ2UgLS1uby1mZiBfcSBfciAtbSBFICYmCisJZ2l0IGNoZWNrb3V0IF9yICYmIHRlc3RfY29tbWl0IEYgJiYKKwlnaXQgY2hlY2tvdXQgX3AgJiYgZ2l0IG1lcmdlIC0tbm8tZmYgX3IgLW0gRyAmJgorCWdpdCBjaGVja291dCBAXl4gJiYgZ2l0IG1lcmdlIC0tbm8tZmYgX3AgLW0gSCAmJgorCisJY2hlY2tfZ3JhcGggPDwtXEVPRgorCSogICBICisJfFwKKwl8ICogICBHCisJfCB8XAorCXwgfCAqIEYKKwl8ICogfCBFCisJfC98XHwKKwl8IHwgKiBECisJfCAqIHwgQworCXwgfC8KKwkqIC8gQgorCXwvCisJKiBBCisJRU9GCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2xvZyAtLWdyYXBoIHdpdGggbGVmdC1za2V3ZWQgbWVyZ2UnICcKKwlnaXQgY2hlY2tvdXQgLS1vcnBoYW4gMF9wICYmIHRlc3RfY29tbWl0IDBfQSAmJgorCWdpdCBjaGVja291dCAtYiAwX3EgMF9wICYmIHRlc3RfY29tbWl0IDBfQiAmJgorCWdpdCBjaGVja291dCAtYiAwX3IgMF9wICYmCisJdGVzdF9jb21taXQgMF9DICYmCisJdGVzdF9jb21taXQgMF9EICYmCisJZ2l0IGNoZWNrb3V0IC1iIDBfcyAwX3AgJiYgdGVzdF9jb21taXQgMF9FICYmCisJZ2l0IGNoZWNrb3V0IC1iIDBfdCAwX3AgJiYgZ2l0IG1lcmdlIC0tbm8tZmYgMF9yXiAwX3MgLW0gMF9GICYmCisJZ2l0IGNoZWNrb3V0IDBfcCAmJiBnaXQgbWVyZ2UgLS1uby1mZiAwX3MgLW0gMF9HICYmCisJZ2l0IGNoZWNrb3V0IEBeICYmIGdpdCBtZXJnZSAtLW5vLWZmIDBfcSAwX3IgMF90IDBfcCAtbSAwX0ggJiYKKworCWNoZWNrX2dyYXBoIDw8LVxFT0YKKwkqLS0tLS0uICAgMF9ICisJfFwgXCBcIFwKKwl8IHwgfCB8ICogMF9HCisJfCB8X3xffC98CisJfC98IHwgfCB8CisJfCB8IHwgKiB8IDBfRgorCXwgfF98L3xcfAorCXwvfCB8IHwgfAorCXwgfCB8IHwgKiAwX0UKKwl8IHxffF98LworCXwvfCB8IHwKKwl8IHwgKiB8IDBfRAorCXwgfCB8LworCXwgfCAqIDBfQworCXwgfC8KKwl8L3wKKwl8ICogMF9CCisJfC8KKwkqIDBfQQorCUVPRgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1ncmFwaCB3aXRoIG5lc3RlZCBsZWZ0LXNrZXdlZCBtZXJnZScgJworCWdpdCBjaGVja291dCAtLW9ycGhhbiAxX3AgJiYKKwl0ZXN0X2NvbW1pdCAxX0EgJiYKKwl0ZXN0X2NvbW1pdCAxX0IgJiYKKwl0ZXN0X2NvbW1pdCAxX0MgJiYKKwlnaXQgY2hlY2tvdXQgLWIgMV9xIEBeICYmIHRlc3RfY29tbWl0IDFfRCAmJgorCWdpdCBjaGVja291dCAxX3AgJiYgZ2l0IG1lcmdlIC0tbm8tZmYgMV9xIC1tIDFfRSAmJgorCWdpdCBjaGVja291dCAtYiAxX3IgQH4zICYmIHRlc3RfY29tbWl0IDFfRiAmJgorCWdpdCBjaGVja291dCAxX3AgJiYgZ2l0IG1lcmdlIC0tbm8tZmYgMV9yIC1tIDFfRyAmJgorCWdpdCBjaGVja291dCBAXl4gJiYgZ2l0IG1lcmdlIC0tbm8tZmYgMV9wIC1tIDFfSCAmJgorCisJY2hlY2tfZ3JhcGggPDwtXEVPRgorCSogICAxX0gKKwl8XAorCXwgKiAgIDFfRworCXwgfFwKKwl8IHwgKiAxX0YKKwl8ICogfCAxX0UKKwl8L3wgfAorCXwgKiB8IDFfRAorCSogfCB8IDFfQworCXwvIC8KKwkqIC8gMV9CCisJfC8KKwkqIDFfQQorCUVPRgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1ncmFwaCB3aXRoIG5lc3RlZCBsZWZ0LXNrZXdlZCBtZXJnZSBmb2xsb3dpbmcgbm9ybWFsIG1lcmdlJyAnCisJZ2l0IGNoZWNrb3V0IC0tb3JwaGFuIDJfcCAmJgorCXRlc3RfY29tbWl0IDJfQSAmJgorCXRlc3RfY29tbWl0IDJfQiAmJgorCXRlc3RfY29tbWl0IDJfQyAmJgorCWdpdCBjaGVja291dCAtYiAyX3EgQF5eICYmCisJdGVzdF9jb21taXQgMl9EICYmCisJdGVzdF9jb21taXQgMl9FICYmCisJZ2l0IGNoZWNrb3V0IC1iIDJfciBAXiAmJiB0ZXN0X2NvbW1pdCAyX0YgJiYKKwlnaXQgY2hlY2tvdXQgMl9xICYmCisJZ2l0IG1lcmdlIC0tbm8tZmYgMl9yIC1tIDJfRyAmJgorCWdpdCBtZXJnZSAtLW5vLWZmIDJfcF4gLW0gMl9IICYmCisJZ2l0IGNoZWNrb3V0IC1iIDJfcyBAXl4gJiYgZ2l0IG1lcmdlIC0tbm8tZmYgMl9xIC1tIDJfSiAmJgorCWdpdCBjaGVja291dCAyX3AgJiYgZ2l0IG1lcmdlIC0tbm8tZmYgMl9zIC1tIDJfSyAmJgorCisJY2hlY2tfZ3JhcGggPDwtXEVPRgorCSogICAyX0sKKwl8XAorCXwgKiAgIDJfSgorCXwgfFwKKwl8IHwgKiAgIDJfSAorCXwgfCB8XAorCXwgfCAqIHwgMl9HCisJfCB8L3wgfAorCXwgfCAqIHwgMl9GCisJfCAqIHwgfCAyX0UKKwl8IHwvIC8KKwl8ICogfCAyX0QKKwkqIHwgfCAyX0MKKwl8IHwvCisJfC98CisJKiB8IDJfQgorCXwvCisJKiAyX0EKKwlFT0YKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tZ3JhcGggd2l0aCBuZXN0ZWQgcmlnaHQtc2tld2VkIG1lcmdlIGZvbGxvd2luZyBsZWZ0LXNrZXdlZCBtZXJnZScgJworCWdpdCBjaGVja291dCAtLW9ycGhhbiAzX3AgJiYKKwl0ZXN0X2NvbW1pdCAzX0EgJiYKKwlnaXQgY2hlY2tvdXQgLWIgM19xICYmCisJdGVzdF9jb21taXQgM19CICYmCisJdGVzdF9jb21taXQgM19DICYmCisJZ2l0IGNoZWNrb3V0IC1iIDNfciBAXiAmJgorCXRlc3RfY29tbWl0IDNfRCAmJgorCWdpdCBjaGVja291dCAzX3EgJiYgZ2l0IG1lcmdlIC0tbm8tZmYgM19yIC1tIDNfRSAmJgorCWdpdCBjaGVja291dCAzX3AgJiYgZ2l0IG1lcmdlIC0tbm8tZmYgM19xIC1tIDNfRiAmJgorCWdpdCBjaGVja291dCAzX3IgJiYgdGVzdF9jb21taXQgM19HICYmCisJZ2l0IGNoZWNrb3V0IDNfcCAmJiBnaXQgbWVyZ2UgLS1uby1mZiAzX3IgLW0gM19IICYmCisJZ2l0IGNoZWNrb3V0IEBeXiAmJiBnaXQgbWVyZ2UgLS1uby1mZiAzX3AgLW0gM19KICYmCisKKwljaGVja19ncmFwaCA8PC1cRU9GCisJKiAgIDNfSgorCXxcCisJfCAqICAgM19ICisJfCB8XAorCXwgfCAqIDNfRworCXwgKiB8IDNfRgorCXwvfCB8CisJfCAqIHwgM19FCisJfCB8XHwKKwl8IHwgKiAzX0QKKwl8ICogfCAzX0MKKwl8IHwvCisJfCAqIDNfQgorCXwvCisJKiAzX0EKKwlFT0YKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbG9nIC0tZ3JhcGggd2l0aCByaWdodC1za2V3ZWQgbWVyZ2UgZm9sbG93aW5nIGEgbGVmdC1za2V3ZWQgb25lJyAnCisJZ2l0IGNoZWNrb3V0IC0tb3JwaGFuIDRfcCAmJgorCXRlc3RfY29tbWl0IDRfQSAmJgorCXRlc3RfY29tbWl0IDRfQiAmJgorCXRlc3RfY29tbWl0IDRfQyAmJgorCWdpdCBjaGVja291dCAtYiA0X3EgQF5eICYmIHRlc3RfY29tbWl0IDRfRCAmJgorCWdpdCBjaGVja291dCAtYiA0X3IgNF9wXiAmJiBnaXQgbWVyZ2UgLS1uby1mZiA0X3EgLW0gNF9FICYmCisJZ2l0IGNoZWNrb3V0IC1iIDRfcyA0X3BeXiAmJgorCWdpdCBtZXJnZSAtLW5vLWZmIDRfciAtbSA0X0YgJiYKKwlnaXQgbWVyZ2UgLS1uby1mZiA0X3AgLW0gNF9HICYmCisJZ2l0IGNoZWNrb3V0IEBeXiAmJiBnaXQgbWVyZ2UgLS1uby1mZiA0X3MgLW0gNF9IICYmCisKKwljaGVja19ncmFwaCAtLWRhdGUtb3JkZXIgPDwtXEVPRgorCSogICA0X0gKKwl8XAorCXwgKiAgIDRfRworCXwgfFwKKwl8ICogfCA0X0YKKwl8L3wgfAorCXwgKiB8ICAgNF9FCisJfCB8XCBcCisJfCB8ICogfCA0X0QKKwl8IHwvIC8KKwl8L3wgfAorCXwgfCAqIDRfQworCXwgfC8KKwl8ICogNF9CCisJfC8KKwkqIDRfQQorCUVPRgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdsb2cgLS1ncmFwaCB3aXRoIG9jdG9wdXMgbWVyZ2Ugd2l0aCBjb2x1bW4gam9pbmluZyBpdHMgcGVudWx0aW1hdGUgcGFyZW50JyAnCisJZ2l0IGNoZWNrb3V0IC0tb3JwaGFuIDVfcCAmJgorCXRlc3RfY29tbWl0IDVfQSAmJgorCWdpdCBicmFuY2ggNV9xICYmCisJZ2l0IGJyYW5jaCA1X3IgJiYKKwl0ZXN0X2NvbW1pdCA1X0IgJiYKKwlnaXQgY2hlY2tvdXQgNV9xICYmIHRlc3RfY29tbWl0IDVfQyAmJgorCWdpdCBjaGVja291dCA1X3IgJiYgdGVzdF9jb21taXQgNV9EICYmCisJZ2l0IGNoZWNrb3V0IDVfcCAmJgorCWdpdCBtZXJnZSAtLW5vLWZmIDVfcSA1X3IgLW0gNV9FICYmCisJZ2l0IGNoZWNrb3V0IDVfcSAmJiB0ZXN0X2NvbW1pdCA1X0YgJiYKKwlnaXQgY2hlY2tvdXQgLWIgNV9zIDVfcF4gJiYKKwlnaXQgbWVyZ2UgLS1uby1mZiA1X3AgNV9xIC1tIDVfRyAmJgorCWdpdCBjaGVja291dCA1X3IgJiYKKwlnaXQgbWVyZ2UgLS1uby1mZiA1X3MgLW0gNV9IICYmCisKKwljaGVja19ncmFwaCA8PC1cRU9GCisJKiAgIDVfSAorCXxcCisJfCAqLS4gICA1X0cKKwl8IHxcIFwKKwl8IHwgfCAqIDVfRgorCXwgfCAqIHwgICA1X0UKKwl8IHwvfFwgXAorCXwgfF98LyAvCisJfC98IHwgLworCXwgfCB8LworCSogfCB8IDVfRAorCXwgfCAqIDVfQworCXwgfC8KKwl8L3wKKwl8ICogNV9CCisJfC8KKwkqIDVfQQorCUVPRgorJworCit0ZXN0X2RvbmUKZGlmZiAtLWdpdCBhL3QvdDUzMTgtY29tbWl0LWdyYXBoLnNoIGIvdC90NTMxOC1jb21taXQtZ3JhcGguc2gKaW5kZXggZDQyYjNlZi4uMTI3YjQwNCAxMDA3NTUKLS0tIGEvdC90NTMxOC1jb21taXQtZ3JhcGguc2gKKysrIGIvdC90NTMxOC1jb21taXQtZ3JhcGguc2gKQEAgLTY2MCw3ICs2NjAsNyBAQAogCQlnaXQgY29tbWl0LXRyZWUgLXAgIiRicm9rZW4iIC1tICJnb29kIiAiJHRyZWUiID5nb29kICYmCiAJCXRlc3RfbXVzdF9mYWlsIGdpdCBjb21taXQtZ3JhcGggd3JpdGUgLS1zdGRpbi1jb21taXRzIFwKIAkJCTxnb29kIDI+dGVzdF9lcnIgJiYKLQkJdGVzdF9pMThuZ3JlcCAidW5hYmxlIHRvIGdldCB0cmVlIGZvciIgdGVzdF9lcnIKKwkJdGVzdF9pMThuZ3JlcCAidW5hYmxlIHRvIHBhcnNlIGNvbW1pdCIgdGVzdF9lcnIKIAkpCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDUzMTktbXVsdGktcGFjay1pbmRleC5zaCBiL3QvdDUzMTktbXVsdGktcGFjay1pbmRleC5zaAppbmRleCBjNzJjYTA0Li5jZDJmODdiIDEwMDc1NQotLS0gYS90L3Q1MzE5LW11bHRpLXBhY2staW5kZXguc2gKKysrIGIvdC90NTMxOS1tdWx0aS1wYWNrLWluZGV4LnNoCkBAIC0xNDcsNiArMTQ3LDIxIEBACiAKIGNvbXBhcmVfcmVzdWx0c193aXRoX21pZHggInR3byBwYWNrcyIKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnd3JpdGUgcHJvZ3Jlc3Mgb2ZmIGZvciByZWRpcmVjdGVkIHN0ZGVycicgJworCWdpdCBtdWx0aS1wYWNrLWluZGV4IC0tb2JqZWN0LWRpcj0kb2JqZGlyIHdyaXRlIDI+ZXJyICYmCisJdGVzdF9saW5lX2NvdW50ID0gMCBlcnIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd3JpdGUgZm9yY2UgcHJvZ3Jlc3Mgb24gZm9yIHN0ZGVycicgJworCWdpdCBtdWx0aS1wYWNrLWluZGV4IC0tb2JqZWN0LWRpcj0kb2JqZGlyIC0tcHJvZ3Jlc3Mgd3JpdGUgMj5lcnIgJiYKKwl0ZXN0X2ZpbGVfbm90X2VtcHR5IGVycgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd3cml0ZSB3aXRoIHRoZSAtLW5vLXByb2dyZXNzIG9wdGlvbicgJworCWdpdCBtdWx0aS1wYWNrLWluZGV4IC0tb2JqZWN0LWRpcj0kb2JqZGlyIC0tbm8tcHJvZ3Jlc3Mgd3JpdGUgMj5lcnIgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAwIGVycgorJworCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgbW9yZSBwYWNrcycgJwogCWZvciBqIGluICQodGVzdF9zZXEgMTEgMjApCiAJZG8KQEAgLTE2OSw2ICsxODQsMjEgQEAKIAlnaXQgbXVsdGktcGFjay1pbmRleCB2ZXJpZnkgLS1vYmplY3QtZGlyPSRvYmpkaXIKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAndmVyaWZ5IHByb2dyZXNzIG9mZiBmb3IgcmVkaXJlY3RlZCBzdGRlcnInICcKKwlnaXQgbXVsdGktcGFjay1pbmRleCB2ZXJpZnkgLS1vYmplY3QtZGlyPSRvYmpkaXIgMj5lcnIgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAwIGVycgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgZm9yY2UgcHJvZ3Jlc3Mgb24gZm9yIHN0ZGVycicgJworCWdpdCBtdWx0aS1wYWNrLWluZGV4IHZlcmlmeSAtLW9iamVjdC1kaXI9JG9iamRpciAtLXByb2dyZXNzIDI+ZXJyICYmCisJdGVzdF9maWxlX25vdF9lbXB0eSBlcnIKKycKKwordGVzdF9leHBlY3Rfc3VjY2VzcyAndmVyaWZ5IHdpdGggdGhlIC0tbm8tcHJvZ3Jlc3Mgb3B0aW9uJyAnCisJZ2l0IG11bHRpLXBhY2staW5kZXggdmVyaWZ5IC0tb2JqZWN0LWRpcj0kb2JqZGlyIC0tbm8tcHJvZ3Jlc3MgMj5lcnIgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAwIGVycgorJworCiAjIHVzYWdlOiBjb3JydXB0X21pZHhfYW5kX3ZlcmlmeSA8cG9zPiA8ZGF0YT4gPG9iamRpcj4gPHN0cmluZz4KIGNvcnJ1cHRfbWlkeF9hbmRfdmVyaWZ5KCkgewogCVBPUz0kMSAmJgpAQCAtMjg0LDYgKzMxNCwyMSBAQAogCQkiZ2l0IC1jIGNvcmUubXVsdGlwYWNraW5kZXg9dHJ1ZSBmc2NrIgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXBhY2sgcHJvZ3Jlc3Mgb2ZmIGZvciByZWRpcmVjdGVkIHN0ZGVycicgJworCWdpdCBtdWx0aS1wYWNrLWluZGV4IC0tb2JqZWN0LWRpcj0kb2JqZGlyIHJlcGFjayAyPmVyciAmJgorCXRlc3RfbGluZV9jb3VudCA9IDAgZXJyCisnCisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlcGFjayBmb3JjZSBwcm9ncmVzcyBvbiBmb3Igc3RkZXJyJyAnCisJZ2l0IG11bHRpLXBhY2staW5kZXggLS1vYmplY3QtZGlyPSRvYmpkaXIgLS1wcm9ncmVzcyByZXBhY2sgMj5lcnIgJiYKKwl0ZXN0X2ZpbGVfbm90X2VtcHR5IGVycgorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZXBhY2sgd2l0aCB0aGUgLS1uby1wcm9ncmVzcyBvcHRpb24nICcKKwlnaXQgbXVsdGktcGFjay1pbmRleCAtLW9iamVjdC1kaXI9JG9iamRpciAtLW5vLXByb2dyZXNzIHJlcGFjayAyPmVyciAmJgorCXRlc3RfbGluZV9jb3VudCA9IDAgZXJyCisnCisKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlcGFjayByZW1vdmVzIG11bHRpLXBhY2staW5kZXgnICcKIAl0ZXN0X3BhdGhfaXNfZmlsZSAkb2JqZGlyL3BhY2svbXVsdGktcGFjay1pbmRleCAmJgogCUdJVF9URVNUX01VTFRJX1BBQ0tfSU5ERVg9MCBnaXQgcmVwYWNrIC1hZGYgJiYKQEAgLTQxMyw2ICs0NTgsMzAgQEAKIAkpCiAnCiAKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2V4cGlyZSBwcm9ncmVzcyBvZmYgZm9yIHJlZGlyZWN0ZWQgc3RkZXJyJyAnCisJKAorCQljZCBkdXAgJiYKKwkJZ2l0IG11bHRpLXBhY2staW5kZXggZXhwaXJlIDI+ZXJyICYmCisJCXRlc3RfbGluZV9jb3VudCA9IDAgZXJyCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdleHBpcmUgZm9yY2UgcHJvZ3Jlc3Mgb24gZm9yIHN0ZGVycicgJworCSgKKwkJY2QgZHVwICYmCisJCWdpdCBtdWx0aS1wYWNrLWluZGV4IC0tcHJvZ3Jlc3MgZXhwaXJlIDI+ZXJyICYmCisJCXRlc3RfZmlsZV9ub3RfZW1wdHkgZXJyCisJKQorJworCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdleHBpcmUgd2l0aCB0aGUgLS1uby1wcm9ncmVzcyBvcHRpb24nICcKKwkoCisJCWNkIGR1cCAmJgorCQlnaXQgbXVsdGktcGFjay1pbmRleCAtLW5vLXByb2dyZXNzIGV4cGlyZSAyPmVyciAmJgorCQl0ZXN0X2xpbmVfY291bnQgPSAwIGVycgorCSkKKycKKwogdGVzdF9leHBlY3Rfc3VjY2VzcyAnZXhwaXJlIHJlbW92ZXMgdW5yZWZlcmVuY2VkIHBhY2tzJyAnCiAJKAogCQljZCBkdXAgJiYKZGlmZiAtLWdpdCBhL3QvdDU1MTAtZmV0Y2guc2ggYi90L3Q1NTEwLWZldGNoLnNoCmluZGV4IGVjYWJiZTEuLjRiNjAyODIgMTAwNzU1Ci0tLSBhL3QvdDU1MTAtZmV0Y2guc2gKKysrIGIvdC90NTUxMC1mZXRjaC5zaApAQCAtNTgzLDYgKzU4MywyMiBAQAogCSkKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnZmV0Y2gud3JpdGVDb21taXRHcmFwaCB3aXRoIHN1Ym1vZHVsZXMnICcKKwlnaXQgY2xvbmUgZHVwcyBzdXBlciAmJgorCSgKKwkJY2Qgc3VwZXIgJiYKKwkJZ2l0IHN1Ym1vZHVsZSBhZGQgImZpbGU6Ly8kVFJBU0hfRElSRUNUT1JZL3RocmVlIiAmJgorCQlnaXQgY29tbWl0IC1tICJhZGQgc3VibW9kdWxlIgorCSkgJiYKKwlnaXQgY2xvbmUgInN1cGVyIiBzdXBlci1jbG9uZSAmJgorCSgKKwkJY2Qgc3VwZXItY2xvbmUgJiYKKwkJcm0gLXJmIC5naXQvb2JqZWN0cy9pbmZvICYmCisJCWdpdCAtYyBmZXRjaC53cml0ZUNvbW1pdEdyYXBoPXRydWUgZmV0Y2ggb3JpZ2luICYmCisJCXRlc3RfcGF0aF9pc19maWxlIC5naXQvb2JqZWN0cy9pbmZvL2NvbW1pdC1ncmFwaHMvY29tbWl0LWdyYXBoLWNoYWluCisJKQorJworCiAjIGNvbmZpZ3VyZWQgcHJ1bmUgdGVzdHMKIAogc2V0X2NvbmZpZ190cmlzdGF0ZSAoKSB7CmRpZmYgLS1naXQgYS90L3Q1NTI4LXB1c2gtZGVmYXVsdC5zaCBiL3QvdDU1MjgtcHVzaC1kZWZhdWx0LnNoCmluZGV4IDQ0MzA5NTYuLjRkMWUwYzMgMTAwNzU1Ci0tLSBhL3QvdDU1MjgtcHVzaC1kZWZhdWx0LnNoCisrKyBiL3QvdDU1MjgtcHVzaC1kZWZhdWx0LnNoCkBAIC0xNjMsNyArMTYzLDcgQEAKICMgdXBkYXRlIHBhcmVudDEncyBmb28gKHdoaWNoIGlzIG91ciB1cHN0cmVhbSkKIHRlc3RfcHVzaGRlZmF1bHRfd29ya2Zsb3cgc3VjY2VzcyB1cHN0cmVhbSBmb28KIAotIyB1cHNyZWFtIGlzIGZvbyB3aGljaCBpcyBub3QgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgYnJhbmNoCisjIHVwc3RyZWFtIGlzIGZvbyB3aGljaCBpcyBub3QgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgYnJhbmNoCiB0ZXN0X3B1c2hkZWZhdWx0X3dvcmtmbG93IGZhaWx1cmUgc2ltcGxlIG1hc3RlcgogCiAjIG1hc3RlciBhbmQgZm9vIGFyZSB1cGRhdGVkCmRpZmYgLS1naXQgYS90L3Q1NTM1LWZldGNoLXB1c2gtc3ltcmVmLnNoIGIvdC90NTUzNS1mZXRjaC1wdXNoLXN5bXJlZi5zaAppbmRleCA4ZWQ1OGQyLi5lOGY2ZDIzIDEwMDc1NQotLS0gYS90L3Q1NTM1LWZldGNoLXB1c2gtc3ltcmVmLnNoCisrKyBiL3QvdDU1MzUtZmV0Y2gtcHVzaC1zeW1yZWYuc2gKQEAgLTEsNiArMSw2IEBACiAjIS9iaW4vc2gKIAotdGVzdF9kZXNjcmlwdGlvbj0nYXZvaWRpbmcgY29uZmxpY3RpbmcgdXBkYXRlIHRocnUgc3ltcmVmIGFsaWFzaW5nJwordGVzdF9kZXNjcmlwdGlvbj0nYXZvaWRpbmcgY29uZmxpY3RpbmcgdXBkYXRlIHRocm91Z2ggc3ltcmVmIGFsaWFzaW5nJwogCiAuIC4vdGVzdC1saWIuc2gKIApkaWZmIC0tZ2l0IGEvdC90NTU0NS1wdXNoLW9wdGlvbnMuc2ggYi90L3Q1NTQ1LXB1c2gtb3B0aW9ucy5zaAppbmRleCAwNGIzNGM0Li4zOGU2ZjczIDEwMDc1NQotLS0gYS90L3Q1NTQ1LXB1c2gtb3B0aW9ucy5zaAorKysgYi90L3Q1NTQ1LXB1c2gtb3B0aW9ucy5zaApAQCAtMTE1LDcgKzExNSw3IEBACiAKIAlnaXQgLUMgcGFyZW50IHN1Ym1vZHVsZSBhZGQgLi4vdXBzdHJlYW0gd29ya2JlbmNoICYmCiAJZ2l0IC1DIHBhcmVudC93b3JrYmVuY2ggcmVtb3RlIGFkZCB1cCAuLi8uLi91cHN0cmVhbSAmJgotCWdpdCAtQyBwYXJlbnQgY29tbWl0IC1tICJhZGQgc3VibW91bGUiICYmCisJZ2l0IC1DIHBhcmVudCBjb21taXQgLW0gImFkZCBzdWJtb2R1bGUiICYmCiAKIAl0ZXN0X2NvbW1pdCAtQyBwYXJlbnQvd29ya2JlbmNoIHR3byAmJgogCWdpdCAtQyBwYXJlbnQgYWRkIHdvcmtiZW5jaCAmJgpkaWZmIC0tZ2l0IGEvdC90NTYxNi1wYXJ0aWFsLWNsb25lLnNoIGIvdC90NTYxNi1wYXJ0aWFsLWNsb25lLnNoCmluZGV4IDE3MTAxMWQuLmZlYTU2Y2QgMTAwNzU1Ci0tLSBhL3QvdDU2MTYtcGFydGlhbC1jbG9uZS5zaAorKysgYi90L3Q1NjE2LXBhcnRpYWwtY2xvbmUuc2gKQEAgLTQ2LDYgKzQ2LDE0IEBACiAJdGVzdCAiJChnaXQgLUMgcGMxIGNvbmZpZyAtLWxvY2FsIHJlbW90ZS5vcmlnaW4ucGFydGlhbGNsb25lZmlsdGVyKSIgPSAiYmxvYjpub25lIgogJwogCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgdGhhdCAucHJvbWlzb3IgZmlsZSBjb250YWlucyByZWZzIGZldGNoZWQnICcKKwlscyBwYzEvLmdpdC9vYmplY3RzL3BhY2svcGFjay0qLnByb21pc29yID5wcm9taXNvcmxpc3QgJiYKKwl0ZXN0X2xpbmVfY291bnQgPSAxIHByb21pc29ybGlzdCAmJgorCWdpdCAtQyBzcnYuYmFyZSByZXYtbGlzdCBIRUFEID5oZWFkaGFzaCAmJgorCWdyZXAgIiQoY2F0IGhlYWRoYXNoKSBIRUFEIiAkKGNhdCBwcm9taXNvcmxpc3QpICYmCisJZ3JlcCAiJChjYXQgaGVhZGhhc2gpIHJlZnMvaGVhZHMvbWFzdGVyIiAkKGNhdCBwcm9taXNvcmxpc3QpCisnCisKICMgY2hlY2tvdXQgbWFzdGVyIHRvIGZvcmNlIGR5bmFtaWMgb2JqZWN0IGZldGNoIG9mIGJsb2JzIGF0IEhFQUQuCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICd2ZXJpZnkgY2hlY2tvdXQgd2l0aCBkeW5hbWljIG9iamVjdCBmZXRjaCcgJwogCWdpdCAtQyBwYzEgcmV2LWxpc3QgLS1xdWlldCAtLW9iamVjdHMgLS1taXNzaW5nPXByaW50IEhFQUQgPm9ic2VydmVkICYmCmRpZmYgLS1naXQgYS90L3Q1NzAyLXByb3RvY29sLXYyLnNoIGIvdC90NTcwMi1wcm90b2NvbC12Mi5zaAppbmRleCBhZTkxNzVjLi5lNzMwNjdkIDEwMDc1NQotLS0gYS90L3Q1NzAyLXByb3RvY29sLXYyLnNoCisrKyBiL3QvdDU3MDItcHJvdG9jb2wtdjIuc2gKQEAgLTMyLDcgKzMyLDcgQEAKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZiBhZHZlcnRpc21lbnQgaXMgZmlsdGVyZWQgd2l0aCBscy1yZW1vdGUgdXNpbmcgcHJvdG9jb2wgdjInICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZiBhZHZlcnRpc2VtZW50IGlzIGZpbHRlcmVkIHdpdGggbHMtcmVtb3RlIHVzaW5nIHByb3RvY29sIHYyJyAnCiAJdGVzdF93aGVuX2ZpbmlzaGVkICJybSAtZiBsb2ciICYmCiAKIAlHSVRfVFJBQ0VfUEFDS0VUPSIkKHB3ZCkvbG9nIiBnaXQgLWMgcHJvdG9jb2wudmVyc2lvbj0yIFwKQEAgLTE1NCw3ICsxNTQsNyBAQAogCXRlc3RfY21wIGV4cGVjdCBhY3R1YWwKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncmVmIGFkdmVydGlzbWVudCBpcyBmaWx0ZXJlZCB3aXRoIGxzLXJlbW90ZSB1c2luZyBwcm90b2NvbCB2MicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVmIGFkdmVydGlzZW1lbnQgaXMgZmlsdGVyZWQgd2l0aCBscy1yZW1vdGUgdXNpbmcgcHJvdG9jb2wgdjInICcKIAl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIGxvZyIgJiYKIAogCUdJVF9UUkFDRV9QQUNLRVQ9IiQocHdkKS9sb2ciIGdpdCAtYyBwcm90b2NvbC52ZXJzaW9uPTIgXApAQCAtMjI1LDcgKzIyNSw3IEBACiAJZ3JlcCAiZmV0Y2g8IHZlcnNpb24gMiIgbG9nCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZiBhZHZlcnRpc21lbnQgaXMgZmlsdGVyZWQgZHVyaW5nIGZldGNoIHVzaW5nIHByb3RvY29sIHYyJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZWYgYWR2ZXJ0aXNlbWVudCBpcyBmaWx0ZXJlZCBkdXJpbmcgZmV0Y2ggdXNpbmcgcHJvdG9jb2wgdjInICcKIAl0ZXN0X3doZW5fZmluaXNoZWQgInJtIC1mIGxvZyIgJiYKIAogCXRlc3RfY29tbWl0IC1DIGZpbGVfcGFyZW50IHRocmVlICYmCkBAIC02ODIsOSArNjgyLDkgQEAKIAlnaXQgLUMgIiRIVFRQRF9ET0NVTUVOVF9ST09UX1BBVEgvaHR0cF9wYXJlbnQiIGxvZyAtMSAtLWZvcm1hdD0lcyBjbGllbnRfYnJhbmNoID5leHBlY3QgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCiAKLQkjIENsaWVudCBkaWRudCByZXF1ZXN0IHRvIHVzZSBwcm90b2NvbCB2MgorCSMgQ2xpZW50IGRpZCBub3QgcmVxdWVzdCB0byB1c2UgcHJvdG9jb2wgdjIKIAkhIGdyZXAgIkdpdC1Qcm90b2NvbDogdmVyc2lvbj0yIiBsb2cgJiYKLQkjIFNlcnZlciBkaWRudCByZXNwb25kIHVzaW5nIHByb3RvY29sIHYyCisJIyBTZXJ2ZXIgZGlkIG5vdCByZXNwb25kIHVzaW5nIHByb3RvY29sIHYyCiAJISBncmVwICJnaXQ8IHZlcnNpb24gMiIgbG9nCiAnCiAKZGlmZiAtLWdpdCBhL3QvdDYwMDYtcmV2LWxpc3QtZm9ybWF0LnNoIGIvdC90NjAwNi1yZXYtbGlzdC1mb3JtYXQuc2gKaW5kZXggY2ZiNzRkMC4uZWJkYzQ5YyAxMDA3NTUKLS0tIGEvdC90NjAwNi1yZXYtbGlzdC1mb3JtYXQuc2gKKysrIGIvdC90NjAwNi1yZXYtbGlzdC1mb3JtYXQuc2gKQEAgLTEwOSwzMSArMTA5LDM1IEBACiBFT0YKIAogIyB3ZSBkb24ndCB0ZXN0IHJlbGF0aXZlIGhlcmUKLXRlc3RfZm9ybWF0IGF1dGhvciAlYW4lbiVhZSVuJWFkJW4lYUQlbiVhdCA8PEVPRgordGVzdF9mb3JtYXQgYXV0aG9yICVhbiVuJWFlJW4lYWwlbiVhZCVuJWFEJW4lYXQgPDxFT0YKIGNvbW1pdCAkaGVhZDIKLUEgVSBUaG9yCi1hdXRob3JAZXhhbXBsZS5jb20KKyRHSVRfQVVUSE9SX05BTUUKKyRHSVRfQVVUSE9SX0VNQUlMCiskVEVTVF9BVVRIT1JfTE9DQUxOQU1FCiBUaHUgQXByIDcgMTU6MTM6MTMgMjAwNSAtMDcwMAogVGh1LCA3IEFwciAyMDA1IDE1OjEzOjEzIC0wNzAwCiAxMTEyOTExOTkzCiBjb21taXQgJGhlYWQxCi1BIFUgVGhvcgotYXV0aG9yQGV4YW1wbGUuY29tCiskR0lUX0FVVEhPUl9OQU1FCiskR0lUX0FVVEhPUl9FTUFJTAorJFRFU1RfQVVUSE9SX0xPQ0FMTkFNRQogVGh1IEFwciA3IDE1OjEzOjEzIDIwMDUgLTA3MDAKIFRodSwgNyBBcHIgMjAwNSAxNToxMzoxMyAtMDcwMAogMTExMjkxMTk5MwogRU9GCiAKLXRlc3RfZm9ybWF0IGNvbW1pdHRlciAlY24lbiVjZSVuJWNkJW4lY0QlbiVjdCA8PEVPRgordGVzdF9mb3JtYXQgY29tbWl0dGVyICVjbiVuJWNlJW4lY2wlbiVjZCVuJWNEJW4lY3QgPDxFT0YKIGNvbW1pdCAkaGVhZDIKLUMgTyBNaXR0ZXIKLWNvbW1pdHRlckBleGFtcGxlLmNvbQorJEdJVF9DT01NSVRURVJfTkFNRQorJEdJVF9DT01NSVRURVJfRU1BSUwKKyRURVNUX0NPTU1JVFRFUl9MT0NBTE5BTUUKIFRodSBBcHIgNyAxNToxMzoxMyAyMDA1IC0wNzAwCiBUaHUsIDcgQXByIDIwMDUgMTU6MTM6MTMgLTA3MDAKIDExMTI5MTE5OTMKIGNvbW1pdCAkaGVhZDEKLUMgTyBNaXR0ZXIKLWNvbW1pdHRlckBleGFtcGxlLmNvbQorJEdJVF9DT01NSVRURVJfTkFNRQorJEdJVF9DT01NSVRURVJfRU1BSUwKKyRURVNUX0NPTU1JVFRFUl9MT0NBTE5BTUUKIFRodSBBcHIgNyAxNToxMzoxMyAyMDA1IC0wNzAwCiBUaHUsIDcgQXByIDIwMDUgMTU6MTM6MTMgLTA3MDAKIDExMTI5MTE5OTMKQEAgLTQxMCw3ICs0MTQsNyBAQAogCXRlc3RfdGljayAmJgogCUM9JChHSVRfQVVUSE9SX0VNQUlMPSBnaXQgY29tbWl0LXRyZWUgSEVBRF57dHJlZX0gPC9kZXYvbnVsbCkgJiYKIAlBPSQoZ2l0IHNob3cgLS1wcmV0dHk9Zm9ybWF0OiVhbiwlYWUsJWFkJW4gLXMgJEMpICYmCi0JdmVyYm9zZSB0ZXN0ICIkQSIgPSAiQSBVIFRob3IsLFRodSBBcHIgNyAxNToxNDoxMyAyMDA1IC0wNzAwIgorCXZlcmJvc2UgdGVzdCAiJEEiID0gIiRHSVRfQVVUSE9SX05BTUUsLFRodSBBcHIgNyAxNToxNDoxMyAyMDA1IC0wNzAwIgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdkZWwgTEYgYmVmb3JlIGVtcHR5ICgxKScgJwpAQCAtNDk1LDcgKzQ5OSw3IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZmxvZyBpZGVudGl0eScgJwotCWVjaG8gIkMgTyBNaXR0ZXI6Y29tbWl0dGVyQGV4YW1wbGUuY29tIiA+ZXhwZWN0ICYmCisJZWNobyAiJEdJVF9DT01NSVRURVJfTkFNRTokR0lUX0NPTU1JVFRFUl9FTUFJTCIgPmV4cGVjdCAmJgogCWdpdCBsb2cgLWcgLTEgLS1mb3JtYXQ9IiVnbjolZ2UiID5hY3R1YWwgJiYKIAl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsCiAnCmRpZmYgLS1naXQgYS90L3Q2MDE2LXJldi1saXN0LWdyYXBoLXNpbXBsaWZ5LWhpc3Rvcnkuc2ggYi90L3Q2MDE2LXJldi1saXN0LWdyYXBoLXNpbXBsaWZ5LWhpc3Rvcnkuc2gKaW5kZXggZjcxODFkMS4uZjVlNmU5MiAxMDA3NTUKLS0tIGEvdC90NjAxNi1yZXYtbGlzdC1ncmFwaC1zaW1wbGlmeS1oaXN0b3J5LnNoCisrKyBiL3QvdDYwMTYtcmV2LWxpc3QtZ3JhcGgtc2ltcGxpZnktaGlzdG9yeS5zaApAQCAtNjcsMTEgKzY3LDEwIEBACiAJZWNobyAifCAqICRDNCIgPj4gZXhwZWN0ZWQgJiYKIAllY2hvICJ8ICogJEMzIiA+PiBleHBlY3RlZCAmJgogCWVjaG8gIiogfCAkQTUiID4+IGV4cGVjdGVkICYmCi0JZWNobyAifCB8ICAgICAiID4+IGV4cGVjdGVkICYmCi0JZWNobyAifCAgXFwgICAgIiA+PiBleHBlY3RlZCAmJgotCWVjaG8gIiotLiBcXCAgICRBNCIgPj4gZXhwZWN0ZWQgJiYKLQllY2hvICJ8XFwgXFwgXFwgICIgPj4gZXhwZWN0ZWQgJiYKLQllY2hvICJ8IHwgfC8gICIgPj4gZXhwZWN0ZWQgJiYKKwllY2hvICJ8IHwgICAiID4+IGV4cGVjdGVkICYmCisJZWNobyAifCAgXFwgICIgPj4gZXhwZWN0ZWQgJiYKKwllY2hvICIqLS4gfCAkQTQiID4+IGV4cGVjdGVkICYmCisJZWNobyAifFxcIFxcfCAiID4+IGV4cGVjdGVkICYmCiAJZWNobyAifCB8ICogJEMyIiA+PiBleHBlY3RlZCAmJgogCWVjaG8gInwgfCAqICRDMSIgPj4gZXhwZWN0ZWQgJiYKIAllY2hvICJ8ICogfCAkQjIiID4+IGV4cGVjdGVkICYmCkBAIC05NywxMSArOTYsMTAgQEAKIAllY2hvICJ8ICogJEM0IiA+PiBleHBlY3RlZCAmJgogCWVjaG8gInwgKiAkQzMiID4+IGV4cGVjdGVkICYmCiAJZWNobyAiKiB8ICRBNSIgPj4gZXhwZWN0ZWQgJiYKLQllY2hvICJ8IHwgICAgICIgPj4gZXhwZWN0ZWQgJiYKLQllY2hvICJ8ICBcXCAgICAiID4+IGV4cGVjdGVkICYmCi0JZWNobyAiKi0uIFxcICAgJEE0IiA+PiBleHBlY3RlZCAmJgotCWVjaG8gInxcXCBcXCBcXCAgIiA+PiBleHBlY3RlZCAmJgotCWVjaG8gInwgfCB8LyAgIiA+PiBleHBlY3RlZCAmJgorCWVjaG8gInwgfCAgICIgPj4gZXhwZWN0ZWQgJiYKKwllY2hvICJ8ICBcXCAgIiA+PiBleHBlY3RlZCAmJgorCWVjaG8gIiotLiB8ICRBNCIgPj4gZXhwZWN0ZWQgJiYKKwllY2hvICJ8XFwgXFx8ICIgPj4gZXhwZWN0ZWQgJiYKIAllY2hvICJ8IHwgKiAkQzIiID4+IGV4cGVjdGVkICYmCiAJZWNobyAifCB8ICogJEMxIiA+PiBleHBlY3RlZCAmJgogCWVjaG8gInwgKiB8ICRCMiIgPj4gZXhwZWN0ZWQgJiYKQEAgLTEzMSw5ICsxMjksOCBAQAogCWVjaG8gInwgKiAkQzQiID4+IGV4cGVjdGVkICYmCiAJZWNobyAifCAqICRDMyIgPj4gZXhwZWN0ZWQgJiYKIAllY2hvICIqIHwgJEE1IiA+PiBleHBlY3RlZCAmJgotCWVjaG8gIiogfCAgICRBNCIgPj4gZXhwZWN0ZWQgJiYKLQllY2hvICJ8XFwgXFwgICIgPj4gZXhwZWN0ZWQgJiYKLQllY2hvICJ8IHwvICAiID4+IGV4cGVjdGVkICYmCisJZWNobyAiKiB8ICRBNCIgPj4gZXhwZWN0ZWQgJiYKKwllY2hvICJ8XFx8ICIgPj4gZXhwZWN0ZWQgJiYKIAllY2hvICJ8ICogJEMyIiA+PiBleHBlY3RlZCAmJgogCWVjaG8gInwgKiAkQzEiID4+IGV4cGVjdGVkICYmCiAJZWNobyAiKiB8ICRBMyIgPj4gZXhwZWN0ZWQgJiYKQEAgLTE1MSw5ICsxNDgsOCBAQAogCWVjaG8gInxcXCAgIiA+PiBleHBlY3RlZCAmJgogCWVjaG8gInwgKiAkQzQiID4+IGV4cGVjdGVkICYmCiAJZWNobyAiKiB8ICRBNSIgPj4gZXhwZWN0ZWQgJiYKLQllY2hvICIqIHwgICAkQTQiID4+IGV4cGVjdGVkICYmCi0JZWNobyAifFxcIFxcICAiID4+IGV4cGVjdGVkICYmCi0JZWNobyAifCB8LyAgIiA+PiBleHBlY3RlZCAmJgorCWVjaG8gIiogfCAkQTQiID4+IGV4cGVjdGVkICYmCisJZWNobyAifFxcfCAiID4+IGV4cGVjdGVkICYmCiAJZWNobyAiKiB8ICRBMyIgPj4gZXhwZWN0ZWQgJiYKIAllY2hvICJ8LyAgIiA+PiBleHBlY3RlZCAmJgogCWVjaG8gIiogJEEyIiA+PiBleHBlY3RlZCAmJgpAQCAtMjU1LDcgKzI1MSw3IEBACiAJZWNobyAiKiB8IHwgfCAkQTMiID4+IGV4cGVjdGVkICYmCiAJZWNobyAibyB8IHwgfCAkQTIiID4+IGV4cGVjdGVkICYmCiAJZWNobyAifC8gLyAvICAiID4+IGV4cGVjdGVkICYmCi0JZWNobyAibyB8IHwgJEExIiA+PiBleHBlY3RlZCAmJgorCWVjaG8gIm8gLyAvICRBMSIgPj4gZXhwZWN0ZWQgJiYKIAllY2hvICIgLyAvICAiID4+IGV4cGVjdGVkICYmCiAJZWNobyAifCBvICRDMyIgPj4gZXhwZWN0ZWQgJiYKIAllY2hvICJ8LyAgIiA+PiBleHBlY3RlZCAmJgpkaWZmIC0tZ2l0IGEvdC90NjAyNC1yZWN1cnNpdmUtbWVyZ2Uuc2ggYi90L3Q2MDI0LXJlY3Vyc2l2ZS1tZXJnZS5zaAppbmRleCAyN2M3ZGU5Li4wYzllM2MyIDEwMDc1NQotLS0gYS90L3Q2MDI0LXJlY3Vyc2l2ZS1tZXJnZS5zaAorKysgYi90L3Q2MDI0LXJlY3Vyc2l2ZS1tZXJnZS5zaApAQCAtMTQsODUgKzE0LDkwIEBACiBHSVRfQ09NTUlUVEVSX0RBVEU9IjIwMDYtMTItMTIgMjM6Mjg6MDAgKzAxMDAiCiBleHBvcnQgR0lUX0NPTU1JVFRFUl9EQVRFCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInNldHVwIHRlc3RzIiAnCi1lY2hvIDEgPiBhMSAmJgotZ2l0IGFkZCBhMSAmJgotR0lUX0FVVEhPUl9EQVRFPSIyMDA2LTEyLTEyIDIzOjAwOjAwIiBnaXQgY29tbWl0IC1tIDEgYTEgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHRlc3RzJyAnCisJZWNobyAxID5hMSAmJgorCWdpdCBhZGQgYTEgJiYKKwlHSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDAiIGdpdCBjb21taXQgLW0gMSBhMSAmJgogCi1naXQgY2hlY2tvdXQgLWIgQSBtYXN0ZXIgJiYKLWVjaG8gQSA+IGExICYmCi1HSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDEiIGdpdCBjb21taXQgLW0gQSBhMSAmJgorCWdpdCBjaGVja291dCAtYiBBIG1hc3RlciAmJgorCWVjaG8gQSA+YTEgJiYKKwlHSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDEiIGdpdCBjb21taXQgLW0gQSBhMSAmJgogCi1naXQgY2hlY2tvdXQgLWIgQiBtYXN0ZXIgJiYKLWVjaG8gQiA+IGExICYmCi1HSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDIiIGdpdCBjb21taXQgLW0gQiBhMSAmJgorCWdpdCBjaGVja291dCAtYiBCIG1hc3RlciAmJgorCWVjaG8gQiA+YTEgJiYKKwlHSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDIiIGdpdCBjb21taXQgLW0gQiBhMSAmJgogCi1naXQgY2hlY2tvdXQgLWIgRCBBICYmCi1naXQgcmV2LXBhcnNlIEIgPiAuZ2l0L01FUkdFX0hFQUQgJiYKLWVjaG8gRCA+IGExICYmCi1naXQgdXBkYXRlLWluZGV4IGExICYmCi1HSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDMiIGdpdCBjb21taXQgLW0gRCAmJgorCWdpdCBjaGVja291dCAtYiBEIEEgJiYKKwlnaXQgcmV2LXBhcnNlIEIgPi5naXQvTUVSR0VfSEVBRCAmJgorCWVjaG8gRCA+YTEgJiYKKwlnaXQgdXBkYXRlLWluZGV4IGExICYmCisJR0lUX0FVVEhPUl9EQVRFPSIyMDA2LTEyLTEyIDIzOjAwOjAzIiBnaXQgY29tbWl0IC1tIEQgJiYKIAotZ2l0IHN5bWJvbGljLXJlZiBIRUFEIHJlZnMvaGVhZHMvb3RoZXIgJiYKLWVjaG8gMiA+IGExICYmCi1HSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDQiIGdpdCBjb21taXQgLW0gMiBhMSAmJgorCWdpdCBzeW1ib2xpYy1yZWYgSEVBRCByZWZzL2hlYWRzL290aGVyICYmCisJZWNobyAyID5hMSAmJgorCUdJVF9BVVRIT1JfREFURT0iMjAwNi0xMi0xMiAyMzowMDowNCIgZ2l0IGNvbW1pdCAtbSAyIGExICYmCiAKLWdpdCBjaGVja291dCAtYiBDICYmCi1lY2hvIEMgPiBhMSAmJgotR0lUX0FVVEhPUl9EQVRFPSIyMDA2LTEyLTEyIDIzOjAwOjA1IiBnaXQgY29tbWl0IC1tIEMgYTEgJiYKKwlnaXQgY2hlY2tvdXQgLWIgQyAmJgorCWVjaG8gQyA+YTEgJiYKKwlHSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDUiIGdpdCBjb21taXQgLW0gQyBhMSAmJgogCi1naXQgY2hlY2tvdXQgLWIgRSBDICYmCi1naXQgcmV2LXBhcnNlIEIgPiAuZ2l0L01FUkdFX0hFQUQgJiYKLWVjaG8gRSA+IGExICYmCi1naXQgdXBkYXRlLWluZGV4IGExICYmCi1HSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDYiIGdpdCBjb21taXQgLW0gRSAmJgorCWdpdCBjaGVja291dCAtYiBFIEMgJiYKKwlnaXQgcmV2LXBhcnNlIEIgPi5naXQvTUVSR0VfSEVBRCAmJgorCWVjaG8gRSA+YTEgJiYKKwlnaXQgdXBkYXRlLWluZGV4IGExICYmCisJR0lUX0FVVEhPUl9EQVRFPSIyMDA2LTEyLTEyIDIzOjAwOjA2IiBnaXQgY29tbWl0IC1tIEUgJiYKIAotZ2l0IGNoZWNrb3V0IC1iIEcgRSAmJgotZ2l0IHJldi1wYXJzZSBBID4gLmdpdC9NRVJHRV9IRUFEICYmCi1lY2hvIEcgPiBhMSAmJgotZ2l0IHVwZGF0ZS1pbmRleCBhMSAmJgotR0lUX0FVVEhPUl9EQVRFPSIyMDA2LTEyLTEyIDIzOjAwOjA3IiBnaXQgY29tbWl0IC1tIEcgJiYKKwlnaXQgY2hlY2tvdXQgLWIgRyBFICYmCisJZ2l0IHJldi1wYXJzZSBBID4uZ2l0L01FUkdFX0hFQUQgJiYKKwllY2hvIEcgPmExICYmCisJZ2l0IHVwZGF0ZS1pbmRleCBhMSAmJgorCUdJVF9BVVRIT1JfREFURT0iMjAwNi0xMi0xMiAyMzowMDowNyIgZ2l0IGNvbW1pdCAtbSBHICYmCiAKLWdpdCBjaGVja291dCAtYiBGIEQgJiYKLWdpdCByZXYtcGFyc2UgQyA+IC5naXQvTUVSR0VfSEVBRCAmJgotZWNobyBGID4gYTEgJiYKLWdpdCB1cGRhdGUtaW5kZXggYTEgJiYKLUdJVF9BVVRIT1JfREFURT0iMjAwNi0xMi0xMiAyMzowMDowOCIgZ2l0IGNvbW1pdCAtbSBGCisJZ2l0IGNoZWNrb3V0IC1iIEYgRCAmJgorCWdpdCByZXYtcGFyc2UgQyA+LmdpdC9NRVJHRV9IRUFEICYmCisJZWNobyBGID5hMSAmJgorCWdpdCB1cGRhdGUtaW5kZXggYTEgJiYKKwlHSVRfQVVUSE9SX0RBVEU9IjIwMDYtMTItMTIgMjM6MDA6MDgiIGdpdCBjb21taXQgLW0gRgogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjb21iaW5lZCBtZXJnZSBjb25mbGljdHMnICcKIAl0ZXN0X211c3RfZmFpbCBlbnYgR0lUX1RFU1RfQ09NTUlUX0dSQVBIPTAgZ2l0IG1lcmdlIC1tIGZpbmFsIEcKICcKIAotY2F0ID4gZXhwZWN0IDw8IEVPRgotPDw8PDw8PCBIRUFECi1GCi09PT09PT09Ci1HCi0+Pj4+Pj4+IEcKLUVPRgordGVzdF9leHBlY3Rfc3VjY2VzcyAncmVzdWx0IGNvbnRhaW5zIGEgY29uZmxpY3QnICcKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJPDw8PDw8PCBIRUFECisJRgorCT09PT09PT0KKwlHCisJPj4+Pj4+PiBHCisJRU9GCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgInJlc3VsdCBjb250YWlucyBhIGNvbmZsaWN0IiAidGVzdF9jbXAgZXhwZWN0IGExIgorCXRlc3RfY21wIGV4cGVjdCBhMQorJwogCi1naXQgbHMtZmlsZXMgLS1zdGFnZSA+IG91dAotY2F0ID4gZXhwZWN0IDw8IEVPRgotMTAwNjQ0IGVjM2ZlMmE3OTE3MDY3MzNmMmQ4ZmE3YWQ0NWQ5YTk2NzIwMzFmNWUgMQlhMQotMTAwNjQ0IGNmODQ0NDNlNDllMWIzNjZmYWM5Mzg3MTFkZGY0YmUyZDRkMWQ5ZTkgMglhMQotMTAwNjQ0IGZkNzkyMzUyOTg1NWQwYjI3NDc5NWFlMzM0OWM1ZTA0MzgzMzM5NzkgMwlhMQotRU9GCit0ZXN0X2V4cGVjdF9zdWNjZXNzICd2aXJ0dWFsIHRyZWVzIHdlcmUgcHJvY2Vzc2VkJyAnCisJZ2l0IGxzLWZpbGVzIC0tc3RhZ2UgPm91dCAmJgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICJ2aXJ0dWFsIHRyZWVzIHdlcmUgcHJvY2Vzc2VkIiAidGVzdF9jbXAgZXhwZWN0IG91dCIKKwljYXQgPmV4cGVjdCA8PC1cRU9GICYmCisJMTAwNjQ0IGVjM2ZlMmE3OTE3MDY3MzNmMmQ4ZmE3YWQ0NWQ5YTk2NzIwMzFmNWUgMQlhMQorCTEwMDY0NCBjZjg0NDQzZTQ5ZTFiMzY2ZmFjOTM4NzExZGRmNGJlMmQ0ZDFkOWU5IDIJYTEKKwkxMDA2NDQgZmQ3OTIzNTI5ODU1ZDBiMjc0Nzk1YWUzMzQ5YzVlMDQzODMzMzk3OSAzCWExCisJRU9GCisKKwl0ZXN0X2NtcCBleHBlY3Qgb3V0CisnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlZnVzZSB0byBtZXJnZSBiaW5hcnkgZmlsZXMnICcKIAlnaXQgcmVzZXQgLS1oYXJkICYmCi0JcHJpbnRmICJcMCIgPiBiaW5hcnktZmlsZSAmJgorCXByaW50ZiAiXDAiID5iaW5hcnktZmlsZSAmJgogCWdpdCBhZGQgYmluYXJ5LWZpbGUgJiYKIAlnaXQgY29tbWl0IC1tIGJpbmFyeSAmJgogCWdpdCBjaGVja291dCBHICYmCi0JcHJpbnRmICJcMFwwIiA+IGJpbmFyeS1maWxlICYmCisJcHJpbnRmICJcMFwwIiA+YmluYXJ5LWZpbGUgJiYKIAlnaXQgYWRkIGJpbmFyeS1maWxlICYmCiAJZ2l0IGNvbW1pdCAtbSBiaW5hcnkyICYmCi0JdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIEYgPiBtZXJnZS5vdXQgMj4gbWVyZ2UuZXJyICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IG1lcmdlIEYgPm1lcmdlLm91dCAyPm1lcmdlLmVyciAmJgogCWdyZXAgIkNhbm5vdCBtZXJnZSBiaW5hcnkgZmlsZXM6IGJpbmFyeS1maWxlIChIRUFEIHZzLiBGKSIgbWVyZ2UuZXJyCiAnCiAKQEAgLTExNiw3ICsxMjEsNiBAQAogCXRlc3QgMSA9ICQoZ2l0IGxzLWZpbGVzIC0tdW5tZXJnZWQgfCB3YyAtbCkgJiYKIAl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIC0tdmVyaWZ5IDoyOmEyICYmCiAJZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSA6MzphMgotCiAnCiAKIHRlc3RfZG9uZQpkaWZmIC0tZ2l0IGEvdC90NjAzNi1yZWN1cnNpdmUtY29ybmVyLWNhc2VzLnNoIGIvdC90NjAzNi1yZWN1cnNpdmUtY29ybmVyLWNhc2VzLnNoCmluZGV4IDdmZGRjYzguLjdkNzNhZmQgMTAwNzU1Ci0tLSBhL3QvdDYwMzYtcmVjdXJzaXZlLWNvcm5lci1jYXNlcy5zaAorKysgYi90L3Q2MDM2LXJlY3Vyc2l2ZS1jb3JuZXItY2FzZXMuc2gKQEAgLTE1MzIsNyArMTUzMiw3IEBACiAJCW12IC1mIGJfUjEgYiAmJgogCQltdiAtZiBhX1IxIGEgJiYKIAkJZ2l0IGFkZCBiIGEgJiYKLQkJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gInZlcnNvbiBSMSBvZiBmaWxlcyIgJiYKKwkJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gInZlcnNpb24gUjEgb2YgZmlsZXMiICYmCiAJCWdpdCB0YWcgUjEgJiYKIAogCQkjIENyZWF0ZSBmaXJzdCBtZXJnZSBvbiBsZWZ0IHNpZGUKQEAgLTE2OTYsNyArMTY5Niw3IEBACiAJCWdpdCBjaGVja291dCBSICYmCiAJCWVjaG8gcmlnaHQgPj5jb250ZW50ICYmCiAJCWdpdCBhZGQgY29udGVudCAmJgotCQl0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtbSAidmVyc29uIFIxIG9mIGNvbnRlbnQiICYmCisJCXRlc3RfdGljayAmJiBnaXQgY29tbWl0IC1tICJ2ZXJzaW9uIFIxIG9mIGNvbnRlbnQiICYmCiAJCWdpdCB0YWcgUjEgJiYKIAogCQkjIENyZWF0ZSBMMgpkaWZmIC0tZ2l0IGEvdC90NjA0Mi1tZXJnZS1yZW5hbWUtY29ybmVyLWNhc2VzLnNoIGIvdC90NjA0Mi1tZXJnZS1yZW5hbWUtY29ybmVyLWNhc2VzLnNoCmluZGV4IGM1YjU3ZjQuLmIwNDdjZjEgMTAwNzU1Ci0tLSBhL3QvdDYwNDItbWVyZ2UtcmVuYW1lLWNvcm5lci1jYXNlcy5zaAorKysgYi90L3Q2MDQyLW1lcmdlLXJlbmFtZS1jb3JuZXItY2FzZXMuc2gKQEAgLTUsNyArNSw3IEBACiAKIC4gLi90ZXN0LWxpYi5zaAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZW5hbWUvZGVsZXRlICsgdW50cmFja2VkIGZpbGUnICcKK3Rlc3Rfc2V0dXBfcmVuYW1lX2RlbGV0ZV91bnRyYWNrZWQgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gcmVuYW1lLWRlbGV0ZS11bnRyYWNrZWQgJiYKIAkoCiAJCWNkIHJlbmFtZS1kZWxldGUtdW50cmFja2VkICYmCkBAIC0yOSw5ICsyOSwxMCBAQAogCQlnaXQgY29tbWl0IC1tIHRyYWNrLXBlb3BsZS1pbnN0ZWFkLW9mLW9iamVjdHMgJiYKIAkJZWNobyAiTXl5eSBQUkVDSU9VU1NTIiA+cmluZwogCSkKLScKK30KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAiRG9lcyBnaXQgcHJlc2VydmUgR29sbHVtJ3MgcHJlY2lvdXMgYXJ0aWZhY3Q/IiAnCisJdGVzdF9zZXR1cF9yZW5hbWVfZGVsZXRlX3VudHJhY2tlZCAmJgogCSgKIAkJY2QgcmVuYW1lLWRlbGV0ZS11bnRyYWNrZWQgJiYKIApAQCAtNDksNyArNTAsNyBAQAogIwogIyBXZSBzaG91bGQgYmUgYWJsZSB0byBtZXJnZSBCICYgQyBjbGVhbmx5CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHJlbmFtZS9tb2RpZnkvYWRkLXNvdXJjZSBjb25mbGljdCcgJwordGVzdF9zZXR1cF9yZW5hbWVfbW9kaWZ5X2FkZF9zb3VyY2UgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gcmVuYW1lLW1vZGlmeS1hZGQtc291cmNlICYmCiAJKAogCQljZCByZW5hbWUtbW9kaWZ5LWFkZC1zb3VyY2UgJiYKQEAgLTcwLDkgKzcxLDEwIEBACiAJCWdpdCBhZGQgYSAmJgogCQlnaXQgY29tbWl0IC1tIEMKIAkpCi0nCit9CiAKIHRlc3RfZXhwZWN0X2ZhaWx1cmUgJ3JlbmFtZS9tb2RpZnkvYWRkLXNvdXJjZSBjb25mbGljdCByZXNvbHZhYmxlJyAnCisJdGVzdF9zZXR1cF9yZW5hbWVfbW9kaWZ5X2FkZF9zb3VyY2UgJiYKIAkoCiAJCWNkIHJlbmFtZS1tb2RpZnktYWRkLXNvdXJjZSAmJgogCkBAIC04OCw3ICs5MCw3IEBACiAJKQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZXNvbHZhYmxlIGNvbmZsaWN0IG1pc3NlZCBpZiByZW5hbWUgbWlzc2VkJyAnCit0ZXN0X3NldHVwX2JyZWFrX2RldGVjdGlvbl8xICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIGJyZWFrLWRldGVjdGlvbi0xICYmCiAJKAogCQljZCBicmVhay1kZXRlY3Rpb24tMSAmJgpAQCAtMTEwLDkgKzExMiwxMCBAQAogCQlnaXQgYWRkIGEgJiYKIAkJZ2l0IGNvbW1pdCAtbSBDCiAJKQotJworfQogCiB0ZXN0X2V4cGVjdF9mYWlsdXJlICdjb25mbGljdCBjYXVzZWQgaWYgcmVuYW1lIG5vdCBkZXRlY3RlZCcgJworCXRlc3Rfc2V0dXBfYnJlYWtfZGV0ZWN0aW9uXzEgJiYKIAkoCiAJCWNkIGJyZWFrLWRldGVjdGlvbi0xICYmCiAKQEAgLTEzNSw3ICsxMzgsNyBAQAogCSkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgY29uZmxpY3QgcmVzb2x2ZWQgd3JvbmcgaWYgcmVuYW1lIG1pc3NlZCcgJwordGVzdF9zZXR1cF9icmVha19kZXRlY3Rpb25fMiAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyBicmVhay1kZXRlY3Rpb24tMiAmJgogCSgKIAkJY2QgYnJlYWstZGV0ZWN0aW9uLTIgJiYKQEAgLTE2MCw5ICsxNjMsMTAgQEAKIAkJZ2l0IGFkZCBhICYmCiAJCWdpdCBjb21taXQgLW0gRQogCSkKLScKK30KIAogdGVzdF9leHBlY3RfZmFpbHVyZSAnbWlzc2VkIGNvbmZsaWN0IGlmIHJlbmFtZSBub3QgZGV0ZWN0ZWQnICcKKwl0ZXN0X3NldHVwX2JyZWFrX2RldGVjdGlvbl8yICYmCiAJKAogCQljZCBicmVhay1kZXRlY3Rpb24tMiAmJgogCkBAIC0xODIsNyArMTg2LDcgQEAKICMgICBDb21taXQgQjogcmVuYW1lIGEtPmIKICMgICBDb21taXQgQzogcmVuYW1lIGEtPmIsIGFkZCB1bnJlbGF0ZWQgYQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCB1bmRldGVjdGVkIHJlbmFtZS9hZGQtc291cmNlIGNhdXNlcyBkYXRhIGxvc3MnICcKK3Rlc3Rfc2V0dXBfYnJlYWtfZGV0ZWN0aW9uXzMgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gYnJlYWstZGV0ZWN0aW9uLTMgJiYKIAkoCiAJCWNkIGJyZWFrLWRldGVjdGlvbi0zICYmCkBAIC0yMDIsOSArMjA2LDEwIEBACiAJCWdpdCBhZGQgYSAmJgogCQlnaXQgY29tbWl0IC1tIEMKIAkpCi0nCit9CiAKIHRlc3RfZXhwZWN0X2ZhaWx1cmUgJ2RldGVjdCByZW5hbWUvYWRkLXNvdXJjZSBhbmQgcHJlc2VydmUgYWxsIGRhdGEnICcKKwl0ZXN0X3NldHVwX2JyZWFrX2RldGVjdGlvbl8zICYmCiAJKAogCQljZCBicmVhay1kZXRlY3Rpb24tMyAmJgogCkBAIC0yMzEsNiArMjM2LDcgQEAKICcKIAogdGVzdF9leHBlY3RfZmFpbHVyZSAnZGV0ZWN0IHJlbmFtZS9hZGQtc291cmNlIGFuZCBwcmVzZXJ2ZSBhbGwgZGF0YSwgbWVyZ2Ugb3RoZXIgd2F5JyAnCisJdGVzdF9zZXR1cF9icmVha19kZXRlY3Rpb25fMyAmJgogCSgKIAkJY2QgYnJlYWstZGV0ZWN0aW9uLTMgJiYKIApAQCAtMjU2LDEwICsyNjIsMTAgQEAKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGNvbnRlbnQgbWVyZ2UgKyByZW5hbWUvZGlyZWN0b3J5IGNvbmZsaWN0JyAnCi0JdGVzdF9jcmVhdGVfcmVwbyByZW5hbWUtZGlyZWN0b3J5LTEgJiYKK3Rlc3Rfc2V0dXBfcmVuYW1lX2RpcmVjdG9yeSAoKSB7CisJdGVzdF9jcmVhdGVfcmVwbyByZW5hbWUtZGlyZWN0b3J5LSQxICYmCiAJKAotCQljZCByZW5hbWUtZGlyZWN0b3J5LTEgJiYKKwkJY2QgcmVuYW1lLWRpcmVjdG9yeS0kMSAmJgogCiAJCXByaW50ZiAiMVxuMlxuM1xuNFxuNVxuNlxuIiA+ZmlsZSAmJgogCQlnaXQgYWRkIGZpbGUgJiYKQEAgLTI5MCwxMSArMjk2LDEyIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tIGxlZnQKIAkpCi0nCit9CiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZS9kaXJlY3RvcnkgY29uZmxpY3QgKyBjbGVhbiBjb250ZW50IG1lcmdlJyAnCisJdGVzdF9zZXR1cF9yZW5hbWVfZGlyZWN0b3J5IDFhICYmCiAJKAotCQljZCByZW5hbWUtZGlyZWN0b3J5LTEgJiYKKwkJY2QgcmVuYW1lLWRpcmVjdG9yeS0xYSAmJgogCiAJCWdpdCBjaGVja291dCBsZWZ0LWNsZWFuXjAgJiYKIApAQCAtMzIwLDggKzMyNyw5IEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JlbmFtZS9kaXJlY3RvcnkgY29uZmxpY3QgKyBjb250ZW50IG1lcmdlIGNvbmZsaWN0JyAnCisJdGVzdF9zZXR1cF9yZW5hbWVfZGlyZWN0b3J5IDFiICYmCiAJKAotCQljZCByZW5hbWUtZGlyZWN0b3J5LTEgJiYKKwkJY2QgcmVuYW1lLWRpcmVjdG9yeS0xYiAmJgogCiAJCWdpdCByZXNldCAtLWhhcmQgJiYKIAkJZ2l0IGNsZWFuIC1mZHF4ICYmCkBAIC0zNTgsNyArMzY2LDcgQEAKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIGNvbnRlbnQgbWVyZ2UgKyByZW5hbWUvZGlyZWN0b3J5IGNvbmZsaWN0IHcvIGRpc2FwcGVhcmluZyBkaXInICcKK3Rlc3Rfc2V0dXBfcmVuYW1lX2RpcmVjdG9yeV8yICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIHJlbmFtZS1kaXJlY3RvcnktMiAmJgogCSgKIAkJY2QgcmVuYW1lLWRpcmVjdG9yeS0yICYmCkBAIC0zODUsOSArMzkzLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tIGxlZnQKIAkpCi0nCit9CiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2Rpc2FwcGVhcmluZyBkaXIgaW4gcmVuYW1lL2RpcmVjdG9yeSBjb25mbGljdCBoYW5kbGVkJyAnCisJdGVzdF9zZXR1cF9yZW5hbWVfZGlyZWN0b3J5XzIgJiYKIAkoCiAJCWNkIHJlbmFtZS1kaXJlY3RvcnktMiAmJgogCkBAIC00MTYsMTAgKzQyNSwxMCBAQAogIyAgIENvbW1pdCBBOiByZW5hbWUgYS0+YiwgbW9kaWZ5aW5nIGIgdG9vCiAjICAgQ29tbWl0IEI6IG1vZGlmeSBhLCBhZGQgZGlmZmVyZW50IGIKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgcmVuYW1lLXdpdGgtY29udGVudC1tZXJnZSB2cy4gYWRkJyAnCi0JdGVzdF9jcmVhdGVfcmVwbyByZW5hbWUtd2l0aC1jb250ZW50LW1lcmdlLWFuZC1hZGQgJiYKK3Rlc3Rfc2V0dXBfcmVuYW1lX3dpdGhfY29udGVudF9tZXJnZV9hbmRfYWRkICgpIHsKKwl0ZXN0X2NyZWF0ZV9yZXBvIHJlbmFtZS13aXRoLWNvbnRlbnQtbWVyZ2UtYW5kLWFkZC0kMSAmJgogCSgKLQkJY2QgcmVuYW1lLXdpdGgtY29udGVudC1tZXJnZS1hbmQtYWRkICYmCisJCWNkIHJlbmFtZS13aXRoLWNvbnRlbnQtbWVyZ2UtYW5kLWFkZC0kMSAmJgogCiAJCXRlc3Rfc2VxIDEgNSA+YSAmJgogCQlnaXQgYWRkIGEgJiYKQEAgLTQzOCwxMSArNDQ3LDEyIEBACiAJCWdpdCBhZGQgYSBiICYmCiAJCWdpdCBjb21taXQgLW0gQgogCSkKLScKK30KIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaGFuZGxlIHJlbmFtZS13aXRoLWNvbnRlbnQtbWVyZ2UgdnMuIGFkZCcgJworCXRlc3Rfc2V0dXBfcmVuYW1lX3dpdGhfY29udGVudF9tZXJnZV9hbmRfYWRkIEFCICYmCiAJKAotCQljZCByZW5hbWUtd2l0aC1jb250ZW50LW1lcmdlLWFuZC1hZGQgJiYKKwkJY2QgcmVuYW1lLXdpdGgtY29udGVudC1tZXJnZS1hbmQtYWRkLUFCICYmCiAKIAkJZ2l0IGNoZWNrb3V0IEFeMCAmJgogCkBAIC00ODMsOCArNDkzLDkgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAnaGFuZGxlIHJlbmFtZS13aXRoLWNvbnRlbnQtbWVyZ2UgdnMuIGFkZCwgbWVyZ2Ugb3RoZXIgd2F5JyAnCisJdGVzdF9zZXR1cF9yZW5hbWVfd2l0aF9jb250ZW50X21lcmdlX2FuZF9hZGQgQkEgJiYKIAkoCi0JCWNkIHJlbmFtZS13aXRoLWNvbnRlbnQtbWVyZ2UtYW5kLWFkZCAmJgorCQljZCByZW5hbWUtd2l0aC1jb250ZW50LW1lcmdlLWFuZC1hZGQtQkEgJiYKIAogCQlnaXQgcmVzZXQgLS1oYXJkICYmCiAJCWdpdCBjbGVhbiAtZmR4ICYmCkBAIC01MzksNyArNTUwLDcgQEAKICMgICAqIFRoZSB3b3JraW5nIGNvcHkgc2hvdWxkIGhhdmUgdHdvIGZpbGVzLCBib3RoIG9mIGZvcm0gY348dW5pcXVlPjsgZG9lcyBpdD8KICMgICAqIE5vdGhpbmcgZWxzZSBzaG91bGQgYmUgcHJlc2VudC4gIElzIGFueXRoaW5nPwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdzZXR1cCByZW5hbWUvcmVuYW1lICgydG8xKSArIG1vZGlmeS9tb2RpZnknICcKK3Rlc3Rfc2V0dXBfcmVuYW1lX3JlbmFtZV8ydG8xICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIHJlbmFtZS1yZW5hbWUtMnRvMSAmJgogCSgKIAkJY2QgcmVuYW1lLXJlbmFtZS0ydG8xICYmCkBAIC01NjIsOSArNTczLDEwIEBACiAJCWdpdCBhZGQgYSAmJgogCQlnaXQgY29tbWl0IC1tIEMKIAkpCi0nCit9CiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ2hhbmRsZSByZW5hbWUvcmVuYW1lICgydG8xKSBjb25mbGljdCBjb3JyZWN0bHknICcKKwl0ZXN0X3NldHVwX3JlbmFtZV9yZW5hbWVfMnRvMSAmJgogCSgKIAkJY2QgcmVuYW1lLXJlbmFtZS0ydG8xICYmCiAKQEAgLTYxMCw3ICs2MjIsNyBAQAogIyAgIENvbW1pdCBBOiBuZXcgZmlsZTogYQogIyAgIENvbW1pdCBCOiByZW5hbWUgYS0+YgogIyAgIENvbW1pdCBDOiByZW5hbWUgYS0+YwotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgc2ltcGxlIHJlbmFtZS9yZW5hbWUgKDF0bzIpIGNvbmZsaWN0JyAnCit0ZXN0X3NldHVwX3JlbmFtZV9yZW5hbWVfMXRvMiAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyByZW5hbWUtcmVuYW1lLTF0bzIgJiYKIAkoCiAJCWNkIHJlbmFtZS1yZW5hbWUtMXRvMiAmJgpAQCAtNjMxLDkgKzY0MywxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSBDCiAJKQotJworfQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdtZXJnZSBoYXMgY29ycmVjdCB3b3JraW5nIHRyZWUgY29udGVudHMnICcKKwl0ZXN0X3NldHVwX3JlbmFtZV9yZW5hbWVfMXRvMiAmJgogCSgKIAkJY2QgcmVuYW1lLXJlbmFtZS0xdG8yICYmCiAKQEAgLTY2Nyw3ICs2ODAsNyBAQAogIwogIyBNZXJnaW5nIG9mIEIgJiBDIHNob3VsZCBOT1QgYmUgY2xlYW47IHRoZXJlJ3MgYSByZW5hbWUvcmVuYW1lIGNvbmZsaWN0CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NldHVwIHJlbmFtZS9yZW5hbWUoMXRvMikvYWRkLXNvdXJjZSBjb25mbGljdCcgJwordGVzdF9zZXR1cF9yZW5hbWVfcmVuYW1lXzF0bzJfYWRkX3NvdXJjZV8xICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIHJlbmFtZS1yZW5hbWUtMXRvMi1hZGQtc291cmNlLTEgJiYKIAkoCiAJCWNkIHJlbmFtZS1yZW5hbWUtMXRvMi1hZGQtc291cmNlLTEgJiYKQEAgLTY4Nyw5ICs3MDAsMTAgQEAKIAkJZ2l0IGFkZCBhICYmCiAJCWdpdCBjb21taXQgLW0gQwogCSkKLScKK30KIAogdGVzdF9leHBlY3RfZmFpbHVyZSAnZGV0ZWN0IGNvbmZsaWN0IHdpdGggcmVuYW1lL3JlbmFtZSgxdG8yKS9hZGQtc291cmNlIG1lcmdlJyAnCisJdGVzdF9zZXR1cF9yZW5hbWVfcmVuYW1lXzF0bzJfYWRkX3NvdXJjZV8xICYmCiAJKAogCQljZCByZW5hbWUtcmVuYW1lLTF0bzItYWRkLXNvdXJjZS0xICYmCiAKQEAgLTcxNCw3ICs3MjgsNyBAQAogCSkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgcmVuYW1lL3JlbmFtZSgxdG8yKS9hZGQtc291cmNlIHJlc29sdmFibGUgY29uZmxpY3QnICcKK3Rlc3Rfc2V0dXBfcmVuYW1lX3JlbmFtZV8xdG8yX2FkZF9zb3VyY2VfMiAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyByZW5hbWUtcmVuYW1lLTF0bzItYWRkLXNvdXJjZS0yICYmCiAJKAogCQljZCByZW5hbWUtcmVuYW1lLTF0bzItYWRkLXNvdXJjZS0yICYmCkBAIC03MzcsOSArNzUxLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tIHR3bwogCSkKLScKK30KIAogdGVzdF9leHBlY3RfZmFpbHVyZSAncmVuYW1lL3JlbmFtZS9hZGQtc291cmNlIHN0aWxsIHRyYWNrcyBuZXcgYSBmaWxlJyAnCisJdGVzdF9zZXR1cF9yZW5hbWVfcmVuYW1lXzF0bzJfYWRkX3NvdXJjZV8yICYmCiAJKAogCQljZCByZW5hbWUtcmVuYW1lLTF0bzItYWRkLXNvdXJjZS0yICYmCiAKQEAgLTc1OSw3ICs3NzQsNyBAQAogCSkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgcmVuYW1lL3JlbmFtZSgxdG8yKS9hZGQtZGVzdCBjb25mbGljdCcgJwordGVzdF9zZXR1cF9yZW5hbWVfcmVuYW1lXzF0bzJfYWRkX2Rlc3QgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gcmVuYW1lLXJlbmFtZS0xdG8yLWFkZC1kZXN0ICYmCiAJKAogCQljZCByZW5hbWUtcmVuYW1lLTF0bzItYWRkLWRlc3QgJiYKQEAgLTc4NCw5ICs3OTksMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gdHdvCiAJKQotJworfQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdyZW5hbWUvcmVuYW1lL2FkZC1kZXN0IG1lcmdlIHN0aWxsIGtub3dzIGFib3V0IGNvbmZsaWN0aW5nIGZpbGUgdmVyc2lvbnMnICcKKwl0ZXN0X3NldHVwX3JlbmFtZV9yZW5hbWVfMXRvMl9hZGRfZGVzdCAmJgogCSgKIAkJY2QgcmVuYW1lLXJlbmFtZS0xdG8yLWFkZC1kZXN0ICYmCiAKQEAgLTgzOCw3ICs4NTQsNyBAQAogIyAgIENvbW1pdCBCOiByZW5hbWUgZm9vLT5iYXIKICMgICBFeHBlY3RlZDogQ09ORkxJQ1QgKHJlbmFtZS9hZGQvZGVsZXRlKSwgdHdvLXdheSBtZXJnZWQgYmFyCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3JhZC1zZXR1cDogcmVuYW1lL2FkZC9kZWxldGUgY29uZmxpY3QnICcKK3Rlc3Rfc2V0dXBfcmFkICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIHJhZCAmJgogCSgKIAkJY2QgcmFkICYmCkBAIC04NjAsOSArODc2LDEwIEBACiAJCWdpdCBtdiBmb28gYmFyICYmCiAJCWdpdCBjb21taXQgLW0gInJlbmFtZSBmb28gdG8gYmFyIgogCSkKLScKK30KIAogdGVzdF9leHBlY3RfZmFpbHVyZSAncmFkLWNoZWNrOiByZW5hbWUvYWRkL2RlbGV0ZSBjb25mbGljdCcgJworCXRlc3Rfc2V0dXBfcmFkICYmCiAJKAogCQljZCByYWQgJiYKIApAQCAtOTA0LDcgKzkyMSw3IEBACiAjICAgQ29tbWl0IEI6IHJlbmFtZSBiYXItPmJheiwgcm0gZm9vCiAjICAgRXhwZWN0ZWQ6IENPTkZMSUNUIChyZW5hbWUvcmVuYW1lL2RlbGV0ZS9kZWxldGUpLCB0d28td2F5IG1lcmdlZCBiYXoKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAncnJkZC1zZXR1cDogcmVuYW1lL3JlbmFtZSgydG8xKS9kZWxldGUvZGVsZXRlIGNvbmZsaWN0JyAnCit0ZXN0X3NldHVwX3JyZGQgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gcnJkZCAmJgogCSgKIAkJY2QgcnJkZCAmJgpAQCAtOTI3LDkgKzk0NCwxMCBAQAogCQlnaXQgcm0gZm9vICYmCiAJCWdpdCBjb21taXQgLW0gIlJlbmFtZSBiYXIsIHJlbW92ZSBmb28iCiAJKQotJworfQogCiB0ZXN0X2V4cGVjdF9mYWlsdXJlICdycmRkLWNoZWNrOiByZW5hbWUvcmVuYW1lKDJ0bzEpL2RlbGV0ZS9kZWxldGUgY29uZmxpY3QnICcKKwl0ZXN0X3NldHVwX3JyZGQgJiYKIAkoCiAJCWNkIHJyZGQgJiYKIApAQCAtOTczLDcgKzk5MSw3IEBACiAjICAgRXhwZWN0ZWQ6IHNpeCBDT05GTElDVChyZW5hbWUvcmVuYW1lKSBtZXNzYWdlcywgZWFjaCBwYXRoIGluIHR3byBvZiB0aGUKICMgICAgICAgICAgICAgbXVsdGktd2F5IG1lcmdlZCBjb250ZW50cyBmb3VuZCBpbiB0d28sIGZvdXIsIHNpeAogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICdtb2Q2LXNldHVwOiBjaGFpbnMgb2YgcmVuYW1lL3JlbmFtZSgxdG8yKSBhbmQgcmVuYW1lL3JlbmFtZSgydG8xKScgJwordGVzdF9zZXR1cF9tb2Q2ICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIG1vZDYgJiYKIAkoCiAJCWNkIG1vZDYgJiYKQEAgLTEwMDksOSArMTAyNywxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKIHRlc3RfZXhwZWN0X2ZhaWx1cmUgJ21vZDYtY2hlY2s6IGNoYWlucyBvZiByZW5hbWUvcmVuYW1lKDF0bzIpIGFuZCByZW5hbWUvcmVuYW1lKDJ0bzEpJyAnCisJdGVzdF9zZXR1cF9tb2Q2ICYmCiAJKAogCQljZCBtb2Q2ICYmCiAKQEAgLTExMDgsNyArMTEyNyw4IEBACiAJIyAgICAgIGZpbGVzLiAgSXMgaXQgcHJlc2VudD8KIAkjICAgNCkgVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgdGhyZWV+KiBmaWxlcyBpbiB0aGUgd29ya2luZwogCSMgICAgICB0cmVlCi0JdGVzdF9leHBlY3Rfc3VjY2VzcyAic2V0dXAgc2ltcGxlICRzaWRlTC8kc2lkZVIgY29uZmxpY3QiICcKKwl0ZXN0X3NldHVwX2NvbGxpc2lvbl9jb25mbGljdCAoKSB7CisJI3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgInNldHVwIHNpbXBsZSAkc2lkZUwvJHNpZGVSIGNvbmZsaWN0IiAnCiAJCXRlc3RfY3JlYXRlX3JlcG8gc2ltcGxlXyR7c2lkZUx9XyR7c2lkZVJ9ICYmCiAJCSgKIAkJCWNkIHNpbXBsZV8ke3NpZGVMfV8ke3NpZGVSfSAmJgpAQCAtMTE4NSw5ICsxMjA1LDExIEBACiAJCQlmaSAmJgogCQkJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gUgogCQkpCi0JJworCSMnCisJfQogCiAJdGVzdF9leHBlY3Rfc3VjY2VzcyAiY2hlY2sgc2ltcGxlICRzaWRlTC8kc2lkZVIgY29uZmxpY3QiICcKKwkJdGVzdF9zZXR1cF9jb2xsaXNpb25fY29uZmxpY3QgJiYKIAkJKAogCQkJY2Qgc2ltcGxlXyR7c2lkZUx9XyR7c2lkZVJ9ICYmCiAKQEAgLTEyNTQsNyArMTI3Niw3IEBACiAjCiAjICAgU28sIHdlIGhhdmUgZm91ciBkaWZmZXJlbnQgY29uZmxpY3RpbmcgZmlsZXMgdGhhdCBhbGwgZW5kIHVwIGF0IHBhdGgKICMgICAndGhyZWUnLgotdGVzdF9leHBlY3Rfc3VjY2VzcyAnc2V0dXAgbmVzdGVkIGNvbmZsaWN0cyBmcm9tIHJlbmFtZS9yZW5hbWUoMnRvMSknICcKK3Rlc3Rfc2V0dXBfbmVzdGVkX2NvbmZsaWN0c19mcm9tX3JlbmFtZV9yZW5hbWUgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gbmVzdGVkX2NvbmZsaWN0c19mcm9tX3JlbmFtZV9yZW5hbWUgJiYKIAkoCiAJCWNkIG5lc3RlZF9jb25mbGljdHNfZnJvbV9yZW5hbWVfcmVuYW1lICYmCkBAIC0xMzA1LDkgKzEzMjcsMTAgQEAKIAkJZ2l0IGFkZCBvbmUgdGhyZWUgJiYKIAkJdGVzdF90aWNrICYmIGdpdCBjb21taXQgLW0gZ2VybWFuCiAJKQotJworfQogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzICdjaGVjayBuZXN0ZWQgY29uZmxpY3RzIGZyb20gcmVuYW1lL3JlbmFtZSgydG8xKScgJworCXRlc3Rfc2V0dXBfbmVzdGVkX2NvbmZsaWN0c19mcm9tX3JlbmFtZV9yZW5hbWUgJiYKIAkoCiAJCWNkIG5lc3RlZF9jb25mbGljdHNfZnJvbV9yZW5hbWVfcmVuYW1lICYmCiAKZGlmZiAtLWdpdCBhL3QvdDYwNDMtbWVyZ2UtcmVuYW1lLWRpcmVjdG9yaWVzLnNoIGIvdC90NjA0My1tZXJnZS1yZW5hbWUtZGlyZWN0b3JpZXMuc2gKaW5kZXggYzk2NjE0Ny4uODM3OTJjNSAxMDA3NTUKLS0tIGEvdC90NjA0My1tZXJnZS1yZW5hbWUtZGlyZWN0b3JpZXMuc2gKKysrIGIvdC90NjA0My1tZXJnZS1yZW5hbWUtZGlyZWN0b3JpZXMuc2gKQEAgLTM4LDcgKzM4LDcgQEAKICMgICBDb21taXQgQjogei97YixjLGQsZS9mfQogIyAgIEV4cGVjdGVkOiB5L3tiLGMsZCxlL2Z9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFhLXNldHVwOiBTaW1wbGUgZGlyZWN0b3J5IHJlbmFtZSBkZXRlY3Rpb24nICcKK3Rlc3Rfc2V0dXBfMWEgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMWEgJiYKIAkoCiAJCWNkIDFhICYmCkBAIC02Nyw5ICs2NywxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFhLWNoZWNrOiBTaW1wbGUgZGlyZWN0b3J5IHJlbmFtZSBkZXRlY3Rpb24nICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFhOiBTaW1wbGUgZGlyZWN0b3J5IHJlbmFtZSBkZXRlY3Rpb24nICcKKwl0ZXN0X3NldHVwXzFhICYmCiAJKAogCQljZCAxYSAmJgogCkBAIC0xMDMsNyArMTA0LDcgQEAKICMgICBDb21taXQgQjogeS97YixjLGR9CiAjICAgRXhwZWN0ZWQ6IHkve2IsYyxkLGV9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFiLXNldHVwOiBNZXJnZSBhIGRpcmVjdG9yeSB3aXRoIGFub3RoZXInICcKK3Rlc3Rfc2V0dXBfMWIgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMWIgJiYKIAkoCiAJCWNkIDFiICYmCkBAIC0xMzQsOSArMTM1LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMWItY2hlY2s6IE1lcmdlIGEgZGlyZWN0b3J5IHdpdGggYW5vdGhlcicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMWI6IE1lcmdlIGEgZGlyZWN0b3J5IHdpdGggYW5vdGhlcicgJworCXRlc3Rfc2V0dXBfMWIgJiYKIAkoCiAJCWNkIDFiICYmCiAKQEAgLTE2NSw3ICsxNjcsNyBAQAogIyAgIENvbW1pdCBCOiB6L3tiLGMsZH0KICMgICBFeHBlY3RlZDogeS97YixjLGR9ICAoYmVjYXVzZSB4L2QgLT4gei9kIC0+IHkvZCkKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMWMtc2V0dXA6IFRyYW5zaXRpdmUgcmVuYW1pbmcnICcKK3Rlc3Rfc2V0dXBfMWMgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMWMgJiYKIAkoCiAJCWNkIDFjICYmCkBAIC0xOTMsOSArMTk1LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMWMtY2hlY2s6IFRyYW5zaXRpdmUgcmVuYW1pbmcnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFjOiBUcmFuc2l0aXZlIHJlbmFtaW5nJyAnCisJdGVzdF9zZXR1cF8xYyAmJgogCSgKIAkJY2QgMWMgJiYKIApAQCAtMjI3LDcgKzIzMCw3IEBACiAjICAgTm90ZTogeS9tICYgei9uIHNob3VsZCBkZWZpbml0ZWx5IG1vdmUgaW50byB4LiAgQnkgdGhlIHNhbWUgdG9rZW4sIGJvdGgKICMgICAgICAgICB5L3doYW1fMSAmIHovd2hhbV8yIHNob3VsZCB0b28uLi5naXZpbmcgdXMgYSBjb25mbGljdC4KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMWQtc2V0dXA6IERpcmVjdG9yeSByZW5hbWVzIGNhdXNlIGEgcmVuYW1lL3JlbmFtZSgydG8xKSBjb25mbGljdCcgJwordGVzdF9zZXR1cF8xZCAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyAxZCAmJgogCSgKIAkJY2QgMWQgJiYKQEAgLTI2Miw5ICsyNjUsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxZC1jaGVjazogRGlyZWN0b3J5IHJlbmFtZXMgY2F1c2UgYSByZW5hbWUvcmVuYW1lKDJ0bzEpIGNvbmZsaWN0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxZDogRGlyZWN0b3J5IHJlbmFtZXMgY2F1c2UgYSByZW5hbWUvcmVuYW1lKDJ0bzEpIGNvbmZsaWN0JyAnCisJdGVzdF9zZXR1cF8xZCAmJgogCSgKIAkJY2QgMWQgJiYKIApAQCAtMzEzLDcgKzMxNyw3IEBACiAjICAgQ29tbWl0IEI6IHove29sZGIsb2xkYyxkfQogIyAgIEV4cGVjdGVkOiB5L3tuZXdiLG5ld2MsZH0KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMWUtc2V0dXA6IFJlbmFtZWQgZGlyZWN0b3J5LCB3aXRoIGFsbCBmaWxlcyBiZWluZyByZW5hbWVkIHRvbycgJwordGVzdF9zZXR1cF8xZSAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyAxZSAmJgogCSgKIAkJY2QgMWUgJiYKQEAgLTM0Miw5ICszNDYsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxZS1jaGVjazogUmVuYW1lZCBkaXJlY3RvcnksIHdpdGggYWxsIGZpbGVzIGJlaW5nIHJlbmFtZWQgdG9vJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxZTogUmVuYW1lZCBkaXJlY3RvcnksIHdpdGggYWxsIGZpbGVzIGJlaW5nIHJlbmFtZWQgdG9vJyAnCisJdGVzdF9zZXR1cF8xZSAmJgogCSgKIAkJY2QgMWUgJiYKIApAQCAtMzcxLDcgKzM3Niw3IEBACiAjICAgQ29tbWl0IEI6IHkve2IsY30sIHgve2QsZSxmfQogIyAgIEV4cGVjdGVkOiB5L3tiLGN9LCB4L3tkLGUsZixnfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxZi1zZXR1cDogU3BsaXQgYSBkaXJlY3RvcnkgaW50byB0d28gb3RoZXIgZGlyZWN0b3JpZXMnICcKK3Rlc3Rfc2V0dXBfMWYgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMWYgJiYKIAkoCiAJCWNkIDFmICYmCkBAIC00MDgsOSArNDEzLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMWYtY2hlY2s6IFNwbGl0IGEgZGlyZWN0b3J5IGludG8gdHdvIG90aGVyIGRpcmVjdG9yaWVzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxZjogU3BsaXQgYSBkaXJlY3RvcnkgaW50byB0d28gb3RoZXIgZGlyZWN0b3JpZXMnICcKKwl0ZXN0X3NldHVwXzFmICYmCiAJKAogCQljZCAxZiAmJgogCkBAIC00NTksNyArNDY1LDcgQEAKICMgICBDb21taXQgQTogeS9iLCB3L2MKICMgICBDb21taXQgQjogei97YixjLGR9CiAjICAgRXhwZWN0ZWQ6IHkvYiwgdy9jLCB6L2QsIHdpdGggd2FybmluZyBhYm91dCB6LyAtPiAoeS8gdnMuIHcvKSBjb25mbGljdAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMmEtc2V0dXA6IERpcmVjdG9yeSBzcGxpdCBpbnRvIHR3byBvbiBvbmUgc2lkZSwgd2l0aCBlcXVhbCBudW1iZXJzIG9mIHBhdGhzJyAnCit0ZXN0X3NldHVwXzJhICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIDJhICYmCiAJKAogCQljZCAyYSAmJgpAQCAtNDg5LDkgKzQ5NSwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzJhLWNoZWNrOiBEaXJlY3Rvcnkgc3BsaXQgaW50byB0d28gb24gb25lIHNpZGUsIHdpdGggZXF1YWwgbnVtYmVycyBvZiBwYXRocycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMmE6IERpcmVjdG9yeSBzcGxpdCBpbnRvIHR3byBvbiBvbmUgc2lkZSwgd2l0aCBlcXVhbCBudW1iZXJzIG9mIHBhdGhzJyAnCisJdGVzdF9zZXR1cF8yYSAmJgogCSgKIAkJY2QgMmEgJiYKIApAQCAtNTIwLDcgKzUyNyw3IEBACiAjICAgQ29tbWl0IEE6IHkvYiwgdy9jCiAjICAgQ29tbWl0IEI6IHove2IsY30sIHgvZAogIyAgIEV4cGVjdGVkOiB5L2IsIHcvYywgeC9kOyBObyB3YXJuaW5nIGFib3V0IHovIC0+ICh5LyB2cy4gdy8pIGNvbmZsaWN0Ci10ZXN0X2V4cGVjdF9zdWNjZXNzICcyYi1zZXR1cDogRGlyZWN0b3J5IHNwbGl0IGludG8gdHdvIG9uIG9uZSBzaWRlLCB3aXRoIGVxdWFsIG51bWJlcnMgb2YgcGF0aHMnICcKK3Rlc3Rfc2V0dXBfMmIgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMmIgJiYKIAkoCiAJCWNkIDJiICYmCkBAIC01NTEsOSArNTU4LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMmItY2hlY2s6IERpcmVjdG9yeSBzcGxpdCBpbnRvIHR3byBvbiBvbmUgc2lkZSwgd2l0aCBlcXVhbCBudW1iZXJzIG9mIHBhdGhzJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcyYjogRGlyZWN0b3J5IHNwbGl0IGludG8gdHdvIG9uIG9uZSBzaWRlLCB3aXRoIGVxdWFsIG51bWJlcnMgb2YgcGF0aHMnICcKKwl0ZXN0X3NldHVwXzJiICYmCiAJKAogCQljZCAyYiAmJgogCkBAIC02MDEsNyArNjA5LDcgQEAKICMgICBDb21taXQgQTogei97YixjLGR9IChubyBjaGFuZ2UpCiAjICAgQ29tbWl0IEI6IHkve2IsY30sIHgvZAogIyAgIEV4cGVjdGVkOiB5L3tiLGN9LCB4L2QKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzNhLXNldHVwOiBBdm9pZCBpbXBsaWNpdCByZW5hbWUgaWYgaW52b2x2ZWQgYXMgc291cmNlIG9uIG90aGVyIHNpZGUnICcKK3Rlc3Rfc2V0dXBfM2EgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gM2EgJiYKIAkoCiAJCWNkIDNhICYmCkBAIC02MzIsOSArNjQwLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnM2EtY2hlY2s6IEF2b2lkIGltcGxpY2l0IHJlbmFtZSBpZiBpbnZvbHZlZCBhcyBzb3VyY2Ugb24gb3RoZXIgc2lkZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnM2E6IEF2b2lkIGltcGxpY2l0IHJlbmFtZSBpZiBpbnZvbHZlZCBhcyBzb3VyY2Ugb24gb3RoZXIgc2lkZScgJworCXRlc3Rfc2V0dXBfM2EgJiYKIAkoCiAJCWNkIDNhICYmCiAKQEAgLTY2NCw3ICs2NzMsNyBAQAogIyAgICAgICAgIGdldCBpdCBpbnZvbHZlZCBpbiBkaXJlY3RvcnkgcmVuYW1lIGRldGVjdGlvbi4gIElmIGl0IHdlcmUsIHdlIG1pZ2h0CiAjICAgICAgICAgZW5kIHVwIHdpdGggQ09ORkxJQ1Q6KHovZCAtPiB5L2QgdnMuIHgvZCB2cy4gdy9kKSwgaS5lLiBhCiAjICAgICAgICAgcmVuYW1lL3JlbmFtZS9yZW5hbWUoMXRvMykgY29uZmxpY3QsIHdoaWNoIGlzIGp1c3Qgd2VpcmQuCi10ZXN0X2V4cGVjdF9zdWNjZXNzICczYi1zZXR1cDogQXZvaWQgaW1wbGljaXQgcmVuYW1lIGlmIGludm9sdmVkIGFzIHNvdXJjZSBvbiBjdXJyZW50IHNpZGUnICcKK3Rlc3Rfc2V0dXBfM2IgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gM2IgJiYKIAkoCiAJCWNkIDNiICYmCkBAIC02OTcsOSArNzA2LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnM2ItY2hlY2s6IEF2b2lkIGltcGxpY2l0IHJlbmFtZSBpZiBpbnZvbHZlZCBhcyBzb3VyY2Ugb24gY3VycmVudCBzaWRlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICczYjogQXZvaWQgaW1wbGljaXQgcmVuYW1lIGlmIGludm9sdmVkIGFzIHNvdXJjZSBvbiBjdXJyZW50IHNpZGUnICcKKwl0ZXN0X3NldHVwXzNiICYmCiAJKAogCQljZCAzYiAmJgogCkBAIC03NDQsNyArNzU0LDcgQEAKICMKICMgV2hhdCBpZiB3ZSB3ZXJlIHRvIGF0dGVtcHQgdG8gZG8gZGlyZWN0b3J5IHJlbmFtZSBkZXRlY3Rpb24gd2hlbiBzb21lb25lCiAjICJtb3N0bHkiIG1vdmVkIGEgZGlyZWN0b3J5IGJ1dCBzdGlsbCBsZWZ0IHNvbWUgZmlsZXMgYXJvdW5kLCBvciwKLSMgZXF1aXZhbGVudGx5LCBmdWxseSByZW5hbWVkIGEgZGlyZWN0b3J5IGluIG9uZSBjb21tbWl0IGFuZCB0aGVuIHJlY3JlYXRlZAorIyBlcXVpdmFsZW50bHksIGZ1bGx5IHJlbmFtZWQgYSBkaXJlY3RvcnkgaW4gb25lIGNvbW1pdCBhbmQgdGhlbiByZWNyZWF0ZWQKICMgdGhhdCBkaXJlY3RvcnkgaW4gYSBsYXRlciBjb21taXQgYWRkaW5nIHNvbWUgbmV3IGZpbGVzIGFuZCB0aGVuIHRyaWVkIHRvCiAjIG1lcmdlPwogIwpAQCAtNzg2LDcgKzc5Niw3IEBACiAjICAgRXhwZWN0ZWQ6IHkve2IsYyxkfSwgei97ZSxmfQogIyAgIE5PVEU6IEV2ZW4gdGhvdWdoIG1vc3QgZmlsZXMgZnJvbSB6IG1vdmVkIHRvIHksIHdlIGRvbid0IHdhbnQgZiB0byBmb2xsb3cuCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzRhLXNldHVwOiBEaXJlY3Rvcnkgc3BsaXQsIHdpdGggb3JpZ2luYWwgZGlyZWN0b3J5IHN0aWxsIHByZXNlbnQnICcKK3Rlc3Rfc2V0dXBfNGEgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gNGEgJiYKIAkoCiAJCWNkIDRhICYmCkBAIC04MTgsOSArODI4LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnNGEtY2hlY2s6IERpcmVjdG9yeSBzcGxpdCwgd2l0aCBvcmlnaW5hbCBkaXJlY3Rvcnkgc3RpbGwgcHJlc2VudCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnNGE6IERpcmVjdG9yeSBzcGxpdCwgd2l0aCBvcmlnaW5hbCBkaXJlY3Rvcnkgc3RpbGwgcHJlc2VudCcgJworCXRlc3Rfc2V0dXBfNGEgJiYKIAkoCiAJCWNkIDRhICYmCiAKQEAgLTg3NCw3ICs4ODUsNyBAQAogIyAgICAgICAgIG9mIGhpc3RvcnksIGdpdmluZyB1cyBubyB3YXkgdG8gcmVwcmVzZW50IHRoaXMgY29uZmxpY3QgaW4gdGhlCiAjICAgICAgICAgaW5kZXguCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzVhLXNldHVwOiBNZXJnZSBkaXJlY3Rvcmllcywgb3RoZXIgc2lkZSBhZGRzIGZpbGVzIHRvIG9yaWdpbmFsIGFuZCB0YXJnZXQnICcKK3Rlc3Rfc2V0dXBfNWEgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gNWEgJiYKIAkoCiAJCWNkIDVhICYmCkBAIC05MDcsOSArOTE4LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnNWEtY2hlY2s6IE1lcmdlIGRpcmVjdG9yaWVzLCBvdGhlciBzaWRlIGFkZHMgZmlsZXMgdG8gb3JpZ2luYWwgYW5kIHRhcmdldCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnNWE6IE1lcmdlIGRpcmVjdG9yaWVzLCBvdGhlciBzaWRlIGFkZHMgZmlsZXMgdG8gb3JpZ2luYWwgYW5kIHRhcmdldCcgJworCXRlc3Rfc2V0dXBfNWEgJiYKIAkoCiAJCWNkIDVhICYmCiAKQEAgLTk0MSwxNCArOTUzLDE0IEBACiAjICAgQ29tbWl0IEI6IHove2IsYyxkXzEsZX0sIHkvZF8zCiAjICAgRXhwZWN0ZWQ6IHkve2IsYyxlfSwgQ09ORkxJQ1QoYWRkL2FkZDogeS9kXzIgdnMuIHkvZF8zKQogIyAgIE5PVEU6IElmIHovZF8xIGluIGNvbW1pdCBCIHdlcmUgdG8gYmUgaW52b2x2ZWQgaW4gZGlyIHJlbmFtZSBkZXRlY3Rpb24sIGFzCi0jICAgICAgICAgd2Ugbm9ybWFseSB3b3VsZCBzaW5jZSB6LyBpcyBiZWluZyByZW5hbWVkIHRvIHkvLCB0aGVuIHRoaXMgd291bGQgYmUKKyMgICAgICAgICB3ZSBub3JtYWxseSB3b3VsZCBzaW5jZSB6LyBpcyBiZWluZyByZW5hbWVkIHRvIHkvLCB0aGVuIHRoaXMgd291bGQgYmUKICMgICAgICAgICBhIHJlbmFtZS9kZWxldGUgKHovZF8xIC0+IHkvZF8xIHZzLiBkZWxldGVkKSBBTkQgYW4gYWRkL2FkZC9hZGQKICMgICAgICAgICBjb25mbGljdCBvZiB5L2RfMSB2cy4geS9kXzIgdnMuIHkvZF8zLiAgQWRkL2FkZC9hZGQgaXMgbm90CiAjICAgICAgICAgcmVwcmVzZW50YWJsZSBpbiB0aGUgaW5kZXgsIHNvIHRoZSBleGlzdGVuY2Ugb2YgeS9kXzMgbmVlZHMgdG8KICMgICAgICAgICBjYXVzZSB1cyB0byBiYWlsIG9uIGRpcmVjdG9yeSByZW5hbWUgZGV0ZWN0aW9uIGZvciB0aGF0IHBhdGgsIGZhbGxpbmcKICMgICAgICAgICBiYWNrIHRvIGdpdCBiZWhhdmlvciB3aXRob3V0IHRoZSBkaXJlY3RvcnkgcmVuYW1lIGRldGVjdGlvbi4KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnNWItc2V0dXA6IFJlbmFtZS9kZWxldGUgaW4gb3JkZXIgdG8gZ2V0IGFkZC9hZGQvYWRkIGNvbmZsaWN0JyAnCit0ZXN0X3NldHVwXzViICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIDViICYmCiAJKAogCQljZCA1YiAmJgpAQCAtOTgxLDkgKzk5MywxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzViLWNoZWNrOiBSZW5hbWUvZGVsZXRlIGluIG9yZGVyIHRvIGdldCBhZGQvYWRkL2FkZCBjb25mbGljdCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnNWI6IFJlbmFtZS9kZWxldGUgaW4gb3JkZXIgdG8gZ2V0IGFkZC9hZGQvYWRkIGNvbmZsaWN0JyAnCisJdGVzdF9zZXR1cF81YiAmJgogCSgKIAkJY2QgNWIgJiYKIApAQCAtMTAyNCw3ICsxMDM3LDcgQEAKICMgICAgICAgICAgICAgeS9kIGFyZSB5L2RfMiBhbmQgeS9kXzQuICBXZSBzdGlsbCBkbyB0aGUgbW92ZSBmcm9tIHovZSB0byB5L2UsCiAjICAgICAgICAgICAgIHRob3VnaCwgYmVjYXVzZSBpdCBkb2Vzbid0IGhhdmUgYW55dGhpbmcgaW4gdGhlIHdheS4KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnNWMtc2V0dXA6IFRyYW5zaXRpdmUgcmVuYW1lIHdvdWxkIGNhdXNlIHJlbmFtZS9yZW5hbWUvcmVuYW1lL2FkZC9hZGQvYWRkJyAnCit0ZXN0X3NldHVwXzVjICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIDVjICYmCiAJKAogCQljZCA1YyAmJgpAQCAtMTA2MSw5ICsxMDc0LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnNWMtY2hlY2s6IFRyYW5zaXRpdmUgcmVuYW1lIHdvdWxkIGNhdXNlIHJlbmFtZS9yZW5hbWUvcmVuYW1lL2FkZC9hZGQvYWRkJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc1YzogVHJhbnNpdGl2ZSByZW5hbWUgd291bGQgY2F1c2UgcmVuYW1lL3JlbmFtZS9yZW5hbWUvYWRkL2FkZC9hZGQnICcKKwl0ZXN0X3NldHVwXzVjICYmCiAJKAogCQljZCA1YyAmJgogCkBAIC0xMTEzLDcgKzExMjcsNyBAQAogIyAgICAgICAgIGRldGVjdGlvbiBmb3Igei9kXzIsIGJ1dCB0aGF0IGRvZXNuJ3QgcHJldmVudCB1cyBmcm9tIGFwcGx5aW5nIHRoZQogIyAgICAgICAgIGRpcmVjdG9yeSByZW5hbWUgZGV0ZWN0aW9uIGZvciB6L2YgLT4geS9mLgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc1ZC1zZXR1cDogRGlyZWN0b3J5L2ZpbGUvZmlsZSBjb25mbGljdCBkdWUgdG8gZGlyZWN0b3J5IHJlbmFtZScgJwordGVzdF9zZXR1cF81ZCAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA1ZCAmJgogCSgKIAkJY2QgNWQgJiYKQEAgLTExNDUsOSArMTE1OSwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzVkLWNoZWNrOiBEaXJlY3RvcnkvZmlsZS9maWxlIGNvbmZsaWN0IGR1ZSB0byBkaXJlY3RvcnkgcmVuYW1lJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc1ZDogRGlyZWN0b3J5L2ZpbGUvZmlsZSBjb25mbGljdCBkdWUgdG8gZGlyZWN0b3J5IHJlbmFtZScgJworCXRlc3Rfc2V0dXBfNWQgJiYKIAkoCiAJCWNkIDVkICYmCiAKQEAgLTEyMDUsNyArMTIyMCw3IEBACiAjICAgICAgICAgdGhlbSB1bmRlciB5LyBkb2Vzbid0IGFjY2lkZW50YWxseSBjYXRjaCB6L2QgYW5kIG1ha2UgaXQgbG9vayBsaWtlCiAjICAgICAgICAgaXQgaXMgYWxzbyBpbnZvbHZlZCBpbiBhIHJlbmFtZS9kZWxldGUgY29uZmxpY3QuCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzZhLXNldHVwOiBUcmlja3kgcmVuYW1lL2RlbGV0ZScgJwordGVzdF9zZXR1cF82YSAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA2YSAmJgogCSgKIAkJY2QgNmEgJiYKQEAgLTEyMzUsOSArMTI1MCwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzZhLWNoZWNrOiBUcmlja3kgcmVuYW1lL2RlbGV0ZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnNmE6IFRyaWNreSByZW5hbWUvZGVsZXRlJyAnCisJdGVzdF9zZXR1cF82YSAmJgogCSgKIAkJY2QgNmEgJiYKIApAQCAtMTI3MSw3ICsxMjg3LDcgQEAKICMgICAgICAgICBidXQgQiBkaWQgdGhhdCByZW5hbWUgYW5kIHN0aWxsIGRlY2lkZWQgdG8gcHV0IHRoZSBmaWxlIGludG8gei8sCiAjICAgICAgICAgc28gd2UgcHJvYmFibHkgc2hvdWxkbid0IGFwcGx5IGRpcmVjdG9yeSByZW5hbWUgZGV0ZWN0aW9uIGZvciBpdC4KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnNmItc2V0dXA6IFNhbWUgcmVuYW1lIGRvbmUgb24gYm90aCBzaWRlcycgJwordGVzdF9zZXR1cF82YiAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA2YiAmJgogCSgKIAkJY2QgNmIgJiYKQEAgLTEzMDAsOSArMTMxNiwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzZiLWNoZWNrOiBTYW1lIHJlbmFtZSBkb25lIG9uIGJvdGggc2lkZXMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzZiOiBTYW1lIHJlbmFtZSBkb25lIG9uIGJvdGggc2lkZXMnICcKKwl0ZXN0X3NldHVwXzZiICYmCiAJKAogCQljZCA2YiAmJgogCkBAIC0xMzM0LDcgKzEzNTEsNyBAQAogIyAgIE5PVEU6IFNlZW1zIG9idmlvdXMsIGJ1dCBqdXN0IGNoZWNraW5nIHRoYXQgdGhlIGltcGxlbWVudGF0aW9uIGRvZXNuJ3QKICMgICAgICAgICAiYWNjaWRlbnRhbGx5IGRldGVjdCBhIHJlbmFtZSIgYW5kIGdpdmUgdXMgeS97YixjLGR9LgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc2Yy1zZXR1cDogUmVuYW1lIG9ubHkgZG9uZSBvbiBzYW1lIHNpZGUnICcKK3Rlc3Rfc2V0dXBfNmMgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gNmMgJiYKIAkoCiAJCWNkIDZjICYmCkBAIC0xMzYyLDkgKzEzNzksMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc2Yy1jaGVjazogUmVuYW1lIG9ubHkgZG9uZSBvbiBzYW1lIHNpZGUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzZjOiBSZW5hbWUgb25seSBkb25lIG9uIHNhbWUgc2lkZScgJworCXRlc3Rfc2V0dXBfNmMgJiYKIAkoCiAJCWNkIDZjICYmCiAKQEAgLTEzOTYsNyArMTQxNCw3IEBACiAjICAgTk9URTogQWdhaW4sIHRoaXMgc2VlbXMgb2J2aW91cyBidXQganVzdCBjaGVja2luZyB0aGF0IHRoZSBpbXBsZW1lbnRhdGlvbgogIyAgICAgICAgIGRvZXNuJ3QgImFjY2lkZW50YWxseSBkZXRlY3QgYSByZW5hbWUiIGFuZCBnaXZlIHVzIHkve2IsYyxkfS4KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnNmQtc2V0dXA6IFdlIGRvIG5vdCBhbHdheXMgd2FudCB0cmFuc2l0aXZlIHJlbmFtaW5nJyAnCit0ZXN0X3NldHVwXzZkICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIDZkICYmCiAJKAogCQljZCA2ZCAmJgpAQCAtMTQyNCw5ICsxNDQyLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnNmQtY2hlY2s6IFdlIGRvIG5vdCBhbHdheXMgd2FudCB0cmFuc2l0aXZlIHJlbmFtaW5nJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc2ZDogV2UgZG8gbm90IGFsd2F5cyB3YW50IHRyYW5zaXRpdmUgcmVuYW1pbmcnICcKKwl0ZXN0X3NldHVwXzZkICYmCiAJKAogCQljZCA2ZCAmJgogCkBAIC0xNDU4LDcgKzE0NzcsNyBAQAogIyAgICAgICAgIGRvZXNuJ3QgImFjY2lkZW50YWxseSBkZXRlY3QgYSByZW5hbWUiIGFuZCBnaXZlIHVzIHkve2IsY30gKwogIyAgICAgICAgIGFkZC9hZGQgY29uZmxpY3Qgb24geS9kXzEgdnMgeS9kXzIuCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzZlLXNldHVwOiBBZGQvYWRkIGZyb20gb25lIHNpZGUnICcKK3Rlc3Rfc2V0dXBfNmUgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gNmUgJiYKIAkoCiAJCWNkIDZlICYmCkBAIC0xNDg3LDkgKzE1MDYsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc2ZS1jaGVjazogQWRkL2FkZCBmcm9tIG9uZSBzaWRlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc2ZTogQWRkL2FkZCBmcm9tIG9uZSBzaWRlJyAnCisJdGVzdF9zZXR1cF82ZSAmJgogCSgKIAkJY2QgNmUgJiYKIApAQCAtMTU1Miw3ICsxNTcyLDcgQEAKICMgICBFeHBlY3RlZDogeS9kLCBDT05GTElDVChyZW5hbWUvcmVuYW1lIGZvciBib3RoIHovYiBhbmQgei9jKQogIyAgIE5PVEU6IFRoZXJlJ3MgYSByZW5hbWUgb2Ygei8gaGVyZSwgeS8gaGFzIG1vcmUgcmVuYW1lcywgc28gei9kIC0+IHkvZC4KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnN2Etc2V0dXA6IHJlbmFtZS1kaXIgdnMuIHJlbmFtZS1kaXIgKE5PVCBzcGxpdCBldmVubHkpIFBMVVMgYWRkLW90aGVyLWZpbGUnICcKK3Rlc3Rfc2V0dXBfN2EgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gN2EgJiYKIAkoCiAJCWNkIDdhICYmCkBAIC0xNTgzLDkgKzE2MDMsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc3YS1jaGVjazogcmVuYW1lLWRpciB2cy4gcmVuYW1lLWRpciAoTk9UIHNwbGl0IGV2ZW5seSkgUExVUyBhZGQtb3RoZXItZmlsZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnN2E6IHJlbmFtZS1kaXIgdnMuIHJlbmFtZS1kaXIgKE5PVCBzcGxpdCBldmVubHkpIFBMVVMgYWRkLW90aGVyLWZpbGUnICcKKwl0ZXN0X3NldHVwXzdhICYmCiAJKAogCQljZCA3YSAmJgogCkBAIC0xNjIzLDcgKzE2NDQsNyBAQAogIyAgIENvbW1pdCBCOiB6L3tiLGMsZF8xfSwgICAgICAgIHcvZF8yCiAjICAgRXhwZWN0ZWQ6IHkve2IsY30sIENPTkZMSUNUKHJlbmFtZS9yZW5hbWUoMnRvMSk6IHgvZF8xLCB3L2RfMiAtPiB5X2QpCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzdiLXNldHVwOiByZW5hbWUvcmVuYW1lKDJ0bzEpLCBidXQgb25seSBkdWUgdG8gdHJhbnNpdGl2ZSByZW5hbWUnICcKK3Rlc3Rfc2V0dXBfN2IgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gN2IgJiYKIAkoCiAJCWNkIDdiICYmCkBAIC0xNjU1LDkgKzE2NzYsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc3Yi1jaGVjazogcmVuYW1lL3JlbmFtZSgydG8xKSwgYnV0IG9ubHkgZHVlIHRvIHRyYW5zaXRpdmUgcmVuYW1lJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc3YjogcmVuYW1lL3JlbmFtZSgydG8xKSwgYnV0IG9ubHkgZHVlIHRvIHRyYW5zaXRpdmUgcmVuYW1lJyAnCisJdGVzdF9zZXR1cF83YiAmJgogCSgKIAkJY2QgN2IgJiYKIApAQCAtMTcwMiw3ICsxNzI0LDcgQEAKICMgICAgICAgICBuZWl0aGVyIENPTkZMSUNUKHgvZCAtPiB3L2QgdnMuIHovZCkKICMgICAgICAgICBub3IgQ09ORkxpQ1QgeC9kIC0+IHcvZCB2cy4geS9kIHZzLiB6L2QpCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzdjLXNldHVwOiByZW5hbWUvcmVuYW1lKDF0by4uLjJvcjMpOyB0cmFuc2l0aXZlIHJlbmFtZSBtYXkgYWRkIGNvbXBsZXhpdHknICcKK3Rlc3Rfc2V0dXBfN2MgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gN2MgJiYKIAkoCiAJCWNkIDdjICYmCkBAIC0xNzMyLDkgKzE3NTQsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc3Yy1jaGVjazogcmVuYW1lL3JlbmFtZSgxdG8uLi4yb3IzKTsgdHJhbnNpdGl2ZSByZW5hbWUgbWF5IGFkZCBjb21wbGV4aXR5JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc3YzogcmVuYW1lL3JlbmFtZSgxdG8uLi4yb3IzKTsgdHJhbnNpdGl2ZSByZW5hbWUgbWF5IGFkZCBjb21wbGV4aXR5JyAnCisJdGVzdF9zZXR1cF83YyAmJgogCSgKIAkJY2QgN2MgJiYKIApAQCAtMTc2Niw3ICsxNzg5LDcgQEAKICMgICBFeHBlY3RlZDogeS97YixjfSwgQ09ORkxJQ1QoZGVsZXRlIHgvZCB2cyByZW5hbWUgdG8geS9kKQogIyAgIE5PVEU6IHotPnkgc28gTk9UIENPTkZMSUNUKGRlbGV0ZSB4L2QgdnMgcmVuYW1lIHRvIHovZCkKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnN2Qtc2V0dXA6IHRyYW5zaXRpdmUgcmVuYW1lIGludm9sdmVkIGluIHJlbmFtZS9kZWxldGU7IGhvdyBpcyBpdCByZXBvcnRlZD8nICcKK3Rlc3Rfc2V0dXBfN2QgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gN2QgJiYKIAkoCiAJCWNkIDdkICYmCkBAIC0xNzk2LDkgKzE4MTksMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc3ZC1jaGVjazogdHJhbnNpdGl2ZSByZW5hbWUgaW52b2x2ZWQgaW4gcmVuYW1lL2RlbGV0ZTsgaG93IGlzIGl0IHJlcG9ydGVkPycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnN2Q6IHRyYW5zaXRpdmUgcmVuYW1lIGludm9sdmVkIGluIHJlbmFtZS9kZWxldGU7IGhvdyBpcyBpdCByZXBvcnRlZD8nICcKKwl0ZXN0X3NldHVwXzdkICYmCiAJKAogCQljZCA3ZCAmJgogCkBAIC0xODUxLDcgKzE4NzUsNyBAQAogIyAgICAgICAgIHNlZSB0ZXN0Y2FzZXMgOWMgYW5kIDlkIGZvciBmdXJ0aGVyIGRpc2N1c3Npb24gb2YgdGhpcyBpc3N1ZSBhbmQKICMgICAgICAgICBob3cgaXQncyByZXNvbHZlZC4KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnN2Utc2V0dXA6IHRyYW5zaXRpdmUgcmVuYW1lIGluIHJlbmFtZS9kZWxldGUgQU5EIGRpcnMgaW4gdGhlIHdheScgJwordGVzdF9zZXR1cF83ZSAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA3ZSAmJgogCSgKIAkJY2QgN2UgJiYKQEAgLTE4ODYsOSArMTkxMCwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzdlLWNoZWNrOiB0cmFuc2l0aXZlIHJlbmFtZSBpbiByZW5hbWUvZGVsZXRlIEFORCBkaXJzIGluIHRoZSB3YXknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzdlOiB0cmFuc2l0aXZlIHJlbmFtZSBpbiByZW5hbWUvZGVsZXRlIEFORCBkaXJzIGluIHRoZSB3YXknICcKKwl0ZXN0X3NldHVwXzdlICYmCiAJKAogCQljZCA3ZSAmJgogCkBAIC0xOTQ1LDcgKzE5NzAsNyBAQAogIyBzaW1wbGUgcnVsZSBmcm9tIHNlY3Rpb24gNSBwcmV2ZW50cyBtZSBmcm9tIGhhbmRsaW5nIHRoaXMgYXMgb3B0aW1hbGx5IGFzCiAjIHdlIHBvdGVudGlhbGx5IGNvdWxkLgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc4YS1zZXR1cDogRHVhbC1kaXJlY3RvcnkgcmVuYW1lLCBvbmUgaW50byB0aGUgb3RoZXJzIHdheScgJwordGVzdF9zZXR1cF84YSAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA4YSAmJgogCSgKIAkJY2QgOGEgJiYKQEAgLTE5NzcsOSArMjAwMiwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzhhLWNoZWNrOiBEdWFsLWRpcmVjdG9yeSByZW5hbWUsIG9uZSBpbnRvIHRoZSBvdGhlcnMgd2F5JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc4YTogRHVhbC1kaXJlY3RvcnkgcmVuYW1lLCBvbmUgaW50byB0aGUgb3RoZXJzIHdheScgJworCXRlc3Rfc2V0dXBfOGEgJiYKIAkoCiAJCWNkIDhhICYmCiAKQEAgLTIwMjMsNyArMjA0OSw3IEBACiAjIG1ha2luZyB1cyBmYWxsIGJhY2sgdG8gcHJlLWRpcmVjdG9yeS1yZW5hbWUtZGV0ZWN0aW9uIGJlaGF2aW9yIGZvciBib3RoCiAjIGVfMSBhbmQgZV8yLgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc4Yi1zZXR1cDogRHVhbC1kaXJlY3RvcnkgcmVuYW1lLCBvbmUgaW50byB0aGUgb3RoZXJzIHdheSwgd2l0aCBjb25mbGljdGluZyBmaWxlbmFtZXMnICcKK3Rlc3Rfc2V0dXBfOGIgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gOGIgJiYKIAkoCiAJCWNkIDhiICYmCkBAIC0yMDU1LDkgKzIwODEsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc4Yi1jaGVjazogRHVhbC1kaXJlY3RvcnkgcmVuYW1lLCBvbmUgaW50byB0aGUgb3RoZXJzIHdheSwgd2l0aCBjb25mbGljdGluZyBmaWxlbmFtZXMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzhiOiBEdWFsLWRpcmVjdG9yeSByZW5hbWUsIG9uZSBpbnRvIHRoZSBvdGhlcnMgd2F5LCB3aXRoIGNvbmZsaWN0aW5nIGZpbGVuYW1lcycgJworCXRlc3Rfc2V0dXBfOGIgJiYKIAkoCiAJCWNkIDhiICYmCiAKQEAgLTIwODksMTQgKzIxMTYsMTQgQEAKICMKICMgICBOb3RlOiBJdCBjb3VsZCBlYXNpbHkgYmUgYXJndWVkIHRoYXQgdGhlIGNvcnJlY3QgcmVzb2x1dGlvbiBoZXJlIGlzCiAjICAgICAgICAgeS97YixjLGV9LCBDT05GTElDVChyZW5hbWUvZGVsZXRlOiB6L2QgLT4geS9kIHZzIGRlbGV0ZWQpCi0jICAgICAgICAgYW5kIHRoYXQgdGhlIG1vZGlmZWQgdmVyc2lvbiBvZiBkIHNob3VsZCBiZSBwcmVzZW50IGluIHkvIGFmdGVyCisjICAgICAgICAgYW5kIHRoYXQgdGhlIG1vZGlmaWVkIHZlcnNpb24gb2YgZCBzaG91bGQgYmUgcHJlc2VudCBpbiB5LyBhZnRlcgogIyAgICAgICAgIHRoZSBtZXJnZSwganVzdCBtYXJrZWQgYXMgY29uZmxpY3RlZC4gIEluZGVlZCwgSSBwcmV2aW91c2x5IGRpZAogIyAgICAgICAgIGFyZ3VlIHRoYXQuICBCdXQgYXBwbHlpbmcgZGlyZWN0b3J5IHJlbmFtZXMgdG8gdGhlIHNpZGUgb2YKICMgICAgICAgICBoaXN0b3J5IHdoZXJlIGEgZmlsZSBpcyBtZXJlbHkgbW9kaWZpZWQgcmVzdWx0cyBpbiBzcHVyaW91cwogIyAgICAgICAgIHJlbmFtZS9yZW5hbWUoMXRvMikgY29uZmxpY3RzIC0tIHNlZSB0ZXN0Y2FzZSA5aC4gIFNlZSBhbHNvCiAjICAgICAgICAgbm90ZXMgaW4gOGQuCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzhjLXNldHVwOiBtb2RpZnkvZGVsZXRlIG9yIHJlbmFtZSttb2RpZnkvZGVsZXRlPycgJwordGVzdF9zZXR1cF84YyAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA4YyAmJgogCSgKIAkJY2QgOGMgJiYKQEAgLTIxMjcsOSArMjE1NCwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzhjLWNoZWNrOiBtb2RpZnkvZGVsZXRlIG9yIHJlbmFtZSttb2RpZnkvZGVsZXRlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc4YzogbW9kaWZ5L2RlbGV0ZSBvciByZW5hbWUrbW9kaWZ5L2RlbGV0ZScgJworCXRlc3Rfc2V0dXBfOGMgJiYKIAkoCiAJCWNkIDhjICYmCiAKQEAgLTIxNzUsNyArMjIwMyw3IEBACiAjICAgZHVyaW5nIG1lcmdpbmcgYXJlIHN1cHBvc2VkIHRvIGJlIGFib3V0IG9wcG9zaXRlIHNpZGVzIGRvaW5nIHRoaW5ncwogIyAgIGRpZmZlcmVudGx5LgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc4ZC1zZXR1cDogcmVuYW1lL2RlbGV0ZS4uLm9yIG5vdD8nICcKK3Rlc3Rfc2V0dXBfOGQgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gOGQgJiYKIAkoCiAJCWNkIDhkICYmCkBAIC0yMjA0LDkgKzIyMzIsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc4ZC1jaGVjazogcmVuYW1lL2RlbGV0ZS4uLm9yIG5vdD8nICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzhkOiByZW5hbWUvZGVsZXRlLi4ub3Igbm90PycgJworCXRlc3Rfc2V0dXBfOGQgJiYKIAkoCiAJCWNkIDhkICYmCiAKQEAgLTIyNTAsNyArMjI3OSw3IEBACiAjICAgICAgICBhYm91dCB0aGUgcmFtaWZpY2F0aW9ucyBvZiBkb2luZyB0aGF0LCBJIGRpZG4ndCBrbm93IGhvdyB0byBydWxlIG91dAogIyAgICAgICAgdGhhdCBvcGVuaW5nIG90aGVyIHdlaXJkIGVkZ2UgYW5kIGNvcm5lciBjYXNlcyBzbyBJIGp1c3QgcHVudGVkLgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc4ZS1zZXR1cDogQm90aCBzaWRlcyByZW5hbWUsIG9uZSBzaWRlIGFkZHMgdG8gb3JpZ2luYWwgZGlyZWN0b3J5JyAnCit0ZXN0X3NldHVwXzhlICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIDhlICYmCiAJKAogCQljZCA4ZSAmJgpAQCAtMjI3OSw5ICsyMzA4LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnOGUtY2hlY2s6IEJvdGggc2lkZXMgcmVuYW1lLCBvbmUgc2lkZSBhZGRzIHRvIG9yaWdpbmFsIGRpcmVjdG9yeScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnOGU6IEJvdGggc2lkZXMgcmVuYW1lLCBvbmUgc2lkZSBhZGRzIHRvIG9yaWdpbmFsIGRpcmVjdG9yeScgJworCXRlc3Rfc2V0dXBfOGUgJiYKIAkoCiAJCWNkIDhlICYmCiAKQEAgLTIzMzMsNyArMjM2Myw3IEBACiAjICAgICAgICAgb2Ygd2hpY2ggb25lIGhhZCB0aGUgbW9zdCBwYXRocyBnb2luZyB0byBpdC4gIEEgbmFpdmUgaW1wbGVtZW50YXRpb24KICMgICAgICAgICBvZiB0aGF0IGNvdWxkIHRha2UgdGhlIG5ldyBmaWxlIGluIGNvbW1pdCBCIGF0IHovaSB0byB4L3cvaSBvciB4L2kuCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzlhLXNldHVwOiBJbm5lciByZW5hbWVkIGRpcmVjdG9yeSB3aXRoaW4gb3V0ZXIgcmVuYW1lZCBkaXJlY3RvcnknICcKK3Rlc3Rfc2V0dXBfOWEgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gOWEgJiYKIAkoCiAJCWNkIDlhICYmCkBAIC0yMzY2LDkgKzIzOTYsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc5YS1jaGVjazogSW5uZXIgcmVuYW1lZCBkaXJlY3Rvcnkgd2l0aGluIG91dGVyIHJlbmFtZWQgZGlyZWN0b3J5JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc5YTogSW5uZXIgcmVuYW1lZCBkaXJlY3Rvcnkgd2l0aGluIG91dGVyIHJlbmFtZWQgZGlyZWN0b3J5JyAnCisJdGVzdF9zZXR1cF85YSAmJgogCSgKIAkJY2QgOWEgJiYKIApAQCAtMjQwNCw3ICsyNDM1LDcgQEAKICMgICBDb21taXQgQjogei97YixjLGRfM30KICMgICBFeHBlY3RlZDogeS97YixjLGRfbWVyZ2VkfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc5Yi1zZXR1cDogVHJhbnNpdGl2ZSByZW5hbWUgd2l0aCBjb250ZW50IG1lcmdlJyAnCit0ZXN0X3NldHVwXzliICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIDliICYmCiAJKAogCQljZCA5YiAmJgpAQCAtMjQzNiw5ICsyNDY3LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnOWItY2hlY2s6IFRyYW5zaXRpdmUgcmVuYW1lIHdpdGggY29udGVudCBtZXJnZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnOWI6IFRyYW5zaXRpdmUgcmVuYW1lIHdpdGggY29udGVudCBtZXJnZScgJworCXRlc3Rfc2V0dXBfOWIgJiYKIAkoCiAJCWNkIDliICYmCiAKQEAgLTI0OTEsNyArMjUyMyw3IEBACiAjICAgICAgICAgYXdheSwgdGhlbiBpZ25vcmUgdGhhdCBwYXJ0aWN1bGFyIHJlbmFtZSBmcm9tIHRoZSBvdGhlciBzaWRlIG9mCiAjICAgICAgICAgaGlzdG9yeSBmb3IgYW55IGltcGxpY2l0IGRpcmVjdG9yeSByZW5hbWVzLgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc5Yy1zZXR1cDogRG91Ymx5IHRyYW5zaXRpdmUgcmVuYW1lPycgJwordGVzdF9zZXR1cF85YyAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA5YyAmJgogCSgKIAkJY2QgOWMgJiYKQEAgLTI1MjYsOSArMjU1OCwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzljLWNoZWNrOiBEb3VibHkgdHJhbnNpdGl2ZSByZW5hbWU/JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICc5YzogRG91Ymx5IHRyYW5zaXRpdmUgcmVuYW1lPycgJworCXRlc3Rfc2V0dXBfOWMgJiYKIAkoCiAJCWNkIDljICYmCiAKQEAgLTI1NzksNyArMjYxMiw3IEBACiAjICAgc2ltcGxlIHJ1bGVzIHRoYXQgYXJlIGNvbnNpc3RlbnQgd2l0aCB3aGF0IHdlIG5lZWQgZm9yIGFsbCB0aGUgb3RoZXIKICMgICB0ZXN0Y2FzZXMgYW5kIHNpbXBsaWZpZXMgdGhpbmdzIGZvciB0aGUgdXNlci4KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnOWQtc2V0dXA6IE4td2F5IHRyYW5zaXRpdmUgcmVuYW1lPycgJwordGVzdF9zZXR1cF85ZCAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA5ZCAmJgogCSgKIAkJY2QgOWQgJiYKQEAgLTI2MTQsOSArMjY0NywxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzlkLWNoZWNrOiBOLXdheSB0cmFuc2l0aXZlIHJlbmFtZT8nICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzlkOiBOLXdheSB0cmFuc2l0aXZlIHJlbmFtZT8nICcKKwl0ZXN0X3NldHVwXzlkICYmCiAJKAogCQljZCA5ZCAmJgogCkBAIC0yNjUzLDcgKzI2ODcsNyBAQAogIyAgIEV4cGVjdGVkOiBjb21iaW5lZC97YSxiLGMsZCxlLGYsZyxoLGksaixrLGx9LCBDT05GTElDVChOdG8xKSB3YXJuaW5ncywKICMgICAgICAgICAgICAgZGlyMS95bywgZGlyMi95bywgZGlyMy95bywgZGlyTi95bwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc5ZS1zZXR1cDogTi10by0xIHdoYW1tbycgJwordGVzdF9zZXR1cF85ZSAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA5ZSAmJgogCSgKIAkJY2QgOWUgJiYKQEAgLTI2OTYsOSArMjczMCwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgQ19MT0NBTEVfT1VUUFVUICc5ZS1jaGVjazogTi10by0xIHdoYW1tbycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyBDX0xPQ0FMRV9PVVRQVVQgJzllOiBOLXRvLTEgd2hhbW1vJyAnCisJdGVzdF9zZXR1cF85ZSAmJgogCSgKIAkJY2QgOWUgJiYKIApAQCAtMjc0NSw3ICsyNzgwLDcgQEAKICMgICBDb21taXQgQjogZ29hbC97YSxifS8kbW9yZV9maWxlcywgZ29hbC9jCiAjICAgRXhwZWN0ZWQ6IHByaW9yaXR5L3thLGJ9LyRtb3JlX2ZpbGVzLCBwcmlvcml0eS9jCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzlmLXNldHVwOiBSZW5hbWVkIGRpcmVjdG9yeSB0aGF0IG9ubHkgY29udGFpbmVkIGltbWVkaWF0ZSBzdWJkaXJzJyAnCit0ZXN0X3NldHVwXzlmICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIDlmICYmCiAJKAogCQljZCA5ZiAmJgpAQCAtMjc3NCw5ICsyODA5LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnOWYtY2hlY2s6IFJlbmFtZWQgZGlyZWN0b3J5IHRoYXQgb25seSBjb250YWluZWQgaW1tZWRpYXRlIHN1YmRpcnMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzlmOiBSZW5hbWVkIGRpcmVjdG9yeSB0aGF0IG9ubHkgY29udGFpbmVkIGltbWVkaWF0ZSBzdWJkaXJzJyAnCisJdGVzdF9zZXR1cF85ZiAmJgogCSgKIAkJY2QgOWYgJiYKIApAQCAtMjgwOSw3ICsyODQ1LDcgQEAKICMgICBDb21taXQgQjogZ29hbC97YSxifS8kbW9yZV9maWxlcywgZ29hbC9jCiAjICAgRXhwZWN0ZWQ6IHByaW9yaXR5L3thbHBoYSxicmF2b30vJG1vcmVfZmlsZXMsIHByaW9yaXR5L2MKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnOWctc2V0dXA6IFJlbmFtZWQgZGlyZWN0b3J5IHRoYXQgb25seSBjb250YWluZWQgaW1tZWRpYXRlIHN1YmRpcnMsIGltbWVkaWF0ZSBzdWJkaXJzIHJlbmFtZWQnICcKK3Rlc3Rfc2V0dXBfOWcgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gOWcgJiYKIAkoCiAJCWNkIDlnICYmCkBAIC0yODQxLDkgKzI4NzcsOSBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X2ZhaWx1cmUgJzlnLWNoZWNrOiBSZW5hbWVkIGRpcmVjdG9yeSB0aGF0IG9ubHkgY29udGFpbmVkIGltbWVkaWF0ZSBzdWJkaXJzLCBpbW1lZGlhdGUgc3ViZGlycyByZW5hbWVkJyAnCit0ZXN0X2V4cGVjdF9mYWlsdXJlICc5ZzogUmVuYW1lZCBkaXJlY3RvcnkgdGhhdCBvbmx5IGNvbnRhaW5lZCBpbW1lZGlhdGUgc3ViZGlycywgaW1tZWRpYXRlIHN1YmRpcnMgcmVuYW1lZCcgJwogCSgKIAkJY2QgOWcgJiYKIApAQCAtMjg3Nyw3ICsyOTEzLDcgQEAKICMgICBFeHBlY3RlZDogeS97YixjfSwgeC9kXzIKICMgICBOT1RFOiBJZiB3ZSBhcHBsaWVkIHRoZSB6LyAtPiB5LyByZW5hbWUgdG8gei9kLCB0aGVuIHdlJ2QgZW5kIHVwIHdpdGgKICMgICAgICAgICBhIHJlbmFtZS9yZW5hbWUoMXRvMikgY29uZmxpY3QgKHovZCAtPiB5L2QgdnMuIHgvZCkKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzloLXNldHVwOiBBdm9pZCBkaXIgcmVuYW1lIG9uIG1lcmVseSBtb2RpZmllZCBwYXRoJyAnCit0ZXN0X3NldHVwXzloICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIDloICYmCiAJKAogCQljZCA5aCAmJgpAQCAtMjkxMCw5ICsyOTQ2LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnOWgtY2hlY2s6IEF2b2lkIGRpciByZW5hbWUgb24gbWVyZWx5IG1vZGlmaWVkIHBhdGgnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzloOiBBdm9pZCBkaXIgcmVuYW1lIG9uIG1lcmVseSBtb2RpZmllZCBwYXRoJyAnCisJdGVzdF9zZXR1cF85aCAmJgogCSgKIAkJY2QgOWggJiYKIApAQCAtMjk1Nyw3ICsyOTk0LDcgQEAKICMgICBFeHBlY3RlZDogQWJvcnRlZCBNZXJnZSArCiAjICAgICAgIEVSUk9SX01TRyh1bnRyYWNrZWQgd29ya2luZyB0cmVlIGZpbGVzIHdvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IG1lcmdlKQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxMGEtc2V0dXA6IE92ZXJ3cml0ZSB1bnRyYWNrZWQgd2l0aCBub3JtYWwgcmVuYW1lL2RlbGV0ZScgJwordGVzdF9zZXR1cF8xMGEgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMTBhICYmCiAJKAogCQljZCAxMGEgJiYKQEAgLTI5ODMsOSArMzAyMCwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEwYS1jaGVjazogT3ZlcndyaXRlIHVudHJhY2tlZCB3aXRoIG5vcm1hbCByZW5hbWUvZGVsZXRlJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxMGE6IE92ZXJ3cml0ZSB1bnRyYWNrZWQgd2l0aCBub3JtYWwgcmVuYW1lL2RlbGV0ZScgJworCXRlc3Rfc2V0dXBfMTBhICYmCiAJKAogCQljZCAxMGEgJiYKIApAQCAtMzAyMSw3ICszMDU5LDcgQEAKICMgICAgICAgICAgICAgei9jXzEgLT4gei9kXzEgcmVuYW1lIHJlY29yZGVkIGF0IHN0YWdlIDMgZm9yIHkvZCArCiAjICAgICAgIEVSUk9SX01TRyhyZWZ1c2luZyB0byBsb3NlIHVudHJhY2tlZCBmaWxlIGF0ICd5L2QnKQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxMGItc2V0dXA6IE92ZXJ3cml0ZSB1bnRyYWNrZWQgd2l0aCBkaXIgcmVuYW1lICsgZGVsZXRlJyAnCit0ZXN0X3NldHVwXzEwYiAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyAxMGIgJiYKIAkoCiAJCWNkIDEwYiAmJgpAQCAtMzA1MCw5ICszMDg4LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTBiLWNoZWNrOiBPdmVyd3JpdGUgdW50cmFja2VkIHdpdGggZGlyIHJlbmFtZSArIGRlbGV0ZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMTBiOiBPdmVyd3JpdGUgdW50cmFja2VkIHdpdGggZGlyIHJlbmFtZSArIGRlbGV0ZScgJworCXRlc3Rfc2V0dXBfMTBiICYmCiAJKAogCQljZCAxMGIgJiYKIApAQCAtMzA5OCwxMCArMzEzNywxMCBAQAogIyAgICAgICAgICAgICB5L2N+Ql4wICsKICMgICAgICAgICAgICAgRVJST1JfTVNHKFJlZnVzaW5nIHRvIGxvc2UgdW50cmFja2VkIGZpbGUgYXQgeS9jKQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxMGMtc2V0dXA6IE92ZXJ3cml0ZSB1bnRyYWNrZWQgd2l0aCBkaXIgcmVuYW1lL3JlbmFtZSgxdG8yKScgJwotCXRlc3RfY3JlYXRlX3JlcG8gMTBjICYmCit0ZXN0X3NldHVwXzEwYyAoKSB7CisJdGVzdF9jcmVhdGVfcmVwbyAxMGNfJDEgJiYKIAkoCi0JCWNkIDEwYyAmJgorCQljZCAxMGNfJDEgJiYKIAogCQlta2RpciB6IHggJiYKIAkJZWNobyBhID56L2EgJiYKQEAgLTMxMjgsMTEgKzMxNjcsMTIgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxMGMtY2hlY2s6IE92ZXJ3cml0ZSB1bnRyYWNrZWQgd2l0aCBkaXIgcmVuYW1lL3JlbmFtZSgxdG8yKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMTBjMTogT3ZlcndyaXRlIHVudHJhY2tlZCB3aXRoIGRpciByZW5hbWUvcmVuYW1lKDF0bzIpJyAnCisJdGVzdF9zZXR1cF8xMGMgMSAmJgogCSgKLQkJY2QgMTBjICYmCisJCWNkIDEwY18xICYmCiAKIAkJZ2l0IGNoZWNrb3V0IEFeMCAmJgogCQllY2hvIGltcG9ydGFudCA+eS9jICYmCkBAIC0zMTYzLDkgKzMyMDMsMTAgQEAKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEwYy1jaGVjazogT3ZlcndyaXRlIHVudHJhY2tlZCB3aXRoIGRpciByZW5hbWUvcmVuYW1lKDF0bzIpLCBvdGhlciBkaXJlY3Rpb24nICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEwYzI6IE92ZXJ3cml0ZSB1bnRyYWNrZWQgd2l0aCBkaXIgcmVuYW1lL3JlbmFtZSgxdG8yKSwgb3RoZXIgZGlyZWN0aW9uJyAnCisJdGVzdF9zZXR1cF8xMGMgMiAmJgogCSgKLQkJY2QgMTBjICYmCisJCWNkIDEwY18yICYmCiAKIAkJZ2l0IHJlc2V0IC0taGFyZCAmJgogCQlnaXQgY2xlYW4gLWZkcXggJiYKQEAgLTMyMDgsNyArMzI0OSw3IEBACiAjICAgICAgICAgICAgIENPTkZMSUNUKHJlbmFtZS9yZW5hbWUpIHovY18xIHZzIHgvZl8yIC0+IHkvd2hhbQogIyAgICAgICAgICAgICBFUlJPUl9NU0coUmVmdXNpbmcgdG8gbG9zZSB1bnRyYWNrZWQgZmlsZSBhdCB5L3doYW0pCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEwZC1zZXR1cDogRGVsZXRlIHVudHJhY2tlZCB3aXRoIGRpciByZW5hbWUvcmVuYW1lKDJ0bzEpJyAnCit0ZXN0X3NldHVwXzEwZCAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyAxMGQgJiYKIAkoCiAJCWNkIDEwZCAmJgpAQCAtMzI0MCw5ICszMjgxLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTBkLWNoZWNrOiBEZWxldGUgdW50cmFja2VkIHdpdGggZGlyIHJlbmFtZS9yZW5hbWUoMnRvMSknICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEwZDogRGVsZXRlIHVudHJhY2tlZCB3aXRoIGRpciByZW5hbWUvcmVuYW1lKDJ0bzEpJyAnCisJdGVzdF9zZXR1cF8xMGQgJiYKIAkoCiAJCWNkIDEwZCAmJgogCkBAIC0zMjkwLDcgKzMzMzIsNyBAQAogIyAgIENvbW1pdCBCOiB6L3thLGIsY30KICMgICBFeHBlY3RlZDogeS97YSxiLGN9ICsgdW50cmFja2VkIHovYwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxMGUtc2V0dXA6IERvZXMgZ2l0IGNvbXBsYWluIGFib3V0IHVudHJhY2tlZCBmaWxlIHRoYXQgaXMgbm90IHJlYWxseSBpbiB0aGUgd2F5PycgJwordGVzdF9zZXR1cF8xMGUgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMTBlICYmCiAJKAogCQljZCAxMGUgJiYKQEAgLTMzMTcsOSArMzM1OSw5IEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3RfZmFpbHVyZSAnMTBlLWNoZWNrOiBEb2VzIGdpdCBjb21wbGFpbiBhYm91dCB1bnRyYWNrZWQgZmlsZSB0aGF0IGlzIG5vdCByZWFsbHkgaW4gdGhlIHdheT8nICcKK3Rlc3RfZXhwZWN0X2ZhaWx1cmUgJzEwZTogRG9lcyBnaXQgY29tcGxhaW4gYWJvdXQgdW50cmFja2VkIGZpbGUgdGhhdCBpcyBub3QgcmVhbGx5IGluIHRoZSB3YXk/JyAnCiAJKAogCQljZCAxMGUgJiYKIApAQCAtMzM3MSw3ICszNDEzLDcgQEAKICMgICAgICAgICAgICAgei9jfkhFQUQgd2l0aCBjb250ZW50cyBvZiBCOnovYl92MiwKICMgICAgICAgICAgICAgei9jIHdpdGggdW5jb21taXR0ZWQgbW9kcyBvbiB0b3Agb2YgQTp6L2NfdjEKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFhLXNldHVwOiBBdm9pZCBsb3NpbmcgZGlydHkgY29udGVudHMgd2l0aCBzaW1wbGUgcmVuYW1lJyAnCit0ZXN0X3NldHVwXzExYSAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyAxMWEgJiYKIAkoCiAJCWNkIDExYSAmJgpAQCAtMzM5OCw5ICszNDQwLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFhLWNoZWNrOiBBdm9pZCBsb3NpbmcgZGlydHkgY29udGVudHMgd2l0aCBzaW1wbGUgcmVuYW1lJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxMWE6IEF2b2lkIGxvc2luZyBkaXJ0eSBjb250ZW50cyB3aXRoIHNpbXBsZSByZW5hbWUnICcKKwl0ZXN0X3NldHVwXzExYSAmJgogCSgKIAkJY2QgMTFhICYmCiAKQEAgLTM0NDEsNyArMzQ4NCw3IEBACiAjICAgICAgICAgICAgIEVSUk9SX01TRyhSZWZ1c2luZyB0byBsb3NlIGRpcnR5IGZpbGUgYXQgei9jKQogCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzExYi1zZXR1cDogQXZvaWQgbG9zaW5nIGRpcnR5IGZpbGUgaW52b2x2ZWQgaW4gZGlyZWN0b3J5IHJlbmFtZScgJwordGVzdF9zZXR1cF8xMWIgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMTFiICYmCiAJKAogCQljZCAxMWIgJiYKQEAgLTM0NzAsOSArMzUxMywxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzExYi1jaGVjazogQXZvaWQgbG9zaW5nIGRpcnR5IGZpbGUgaW52b2x2ZWQgaW4gZGlyZWN0b3J5IHJlbmFtZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFiOiBBdm9pZCBsb3NpbmcgZGlydHkgZmlsZSBpbnZvbHZlZCBpbiBkaXJlY3RvcnkgcmVuYW1lJyAnCisJdGVzdF9zZXR1cF8xMWIgJiYKIAkoCiAJCWNkIDExYiAmJgogCkBAIC0zNTE1LDcgKzM1NTksNyBAQAogIyAgIEV4cGVjdGVkOiBBYm9ydF9tc2coImZvbGxvd2luZyBmaWxlcyB3b3VsZCBiZSBvdmVyd3JpdHRlbiBieSBtZXJnZSIpICsKICMgICAgICAgICAgICAgeS9jIGxlZnQgdW50b3VjaGVkIChzdGlsbCBoYXMgdW5jb21taXR0ZWQgbW9kcykKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFjLXNldHVwOiBBdm9pZCBsb3Npbmcgbm90LXVwdG9kYXRlIHdpdGggcmVuYW1lICsgRC9GIGNvbmZsaWN0JyAnCit0ZXN0X3NldHVwXzExYyAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyAxMWMgJiYKIAkoCiAJCWNkIDExYyAmJgpAQCAtMzU0NSw5ICszNTg5LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFjLWNoZWNrOiBBdm9pZCBsb3Npbmcgbm90LXVwdG9kYXRlIHdpdGggcmVuYW1lICsgRC9GIGNvbmZsaWN0JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxMWM6IEF2b2lkIGxvc2luZyBub3QtdXB0b2RhdGUgd2l0aCByZW5hbWUgKyBEL0YgY29uZmxpY3QnICcKKwl0ZXN0X3NldHVwXzExYyAmJgogCSgKIAkJY2QgMTFjICYmCiAKQEAgLTM1ODEsNyArMzYyNiw3IEBACiAjICAgICAgICAgICAgIFdhcm5pbmdfTXNnKCJSZWZ1c2luZyB0byBsb3NlIGRpcnR5IGZpbGUgYXQgei9jKSArCiAjICAgICAgICAgICAgIHkve2EsY35IRUFELGMvZH0sIHgvYiwgbm93LXVudHJhY2tlZCB6L2NfdjEgd2l0aCB1bmNvbW1pdHRlZCBtb2RzCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzExZC1zZXR1cDogQXZvaWQgbG9zaW5nIG5vdC11cHRvZGF0ZSB3aXRoIHJlbmFtZSArIEQvRiBjb25mbGljdCcgJwordGVzdF9zZXR1cF8xMWQgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMTFkICYmCiAJKAogCQljZCAxMWQgJiYKQEAgLTM2MTIsOSArMzY1NywxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzExZC1jaGVjazogQXZvaWQgbG9zaW5nIG5vdC11cHRvZGF0ZSB3aXRoIHJlbmFtZSArIEQvRiBjb25mbGljdCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFkOiBBdm9pZCBsb3Npbmcgbm90LXVwdG9kYXRlIHdpdGggcmVuYW1lICsgRC9GIGNvbmZsaWN0JyAnCisJdGVzdF9zZXR1cF8xMWQgJiYKIAkoCiAJCWNkIDExZCAmJgogCkBAIC0zNjU5LDcgKzM3MDUsNyBAQAogIyAgICAgICAgICAgICB5L2N+SEVBRCBoYXMgQTp5L2NfMiBjb250ZW50cwogIyAgICAgICAgICAgICB5L2MgaGFzIGRpcnR5IGZpbGUgZnJvbSBiZWZvcmUgbWVyZ2UKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFlLXNldHVwOiBBdm9pZCBkZWxldGluZyBub3QtdXB0b2RhdGUgd2l0aCBkaXIgcmVuYW1lL3JlbmFtZSgxdG8yKS9hZGQnICcKK3Rlc3Rfc2V0dXBfMTFlICgpIHsKIAl0ZXN0X2NyZWF0ZV9yZXBvIDExZSAmJgogCSgKIAkJY2QgMTFlICYmCkBAIC0zNjkxLDkgKzM3MzcsMTAgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxMWUtY2hlY2s6IEF2b2lkIGRlbGV0aW5nIG5vdC11cHRvZGF0ZSB3aXRoIGRpciByZW5hbWUvcmVuYW1lKDF0bzIpL2FkZCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFlOiBBdm9pZCBkZWxldGluZyBub3QtdXB0b2RhdGUgd2l0aCBkaXIgcmVuYW1lL3JlbmFtZSgxdG8yKS9hZGQnICcKKwl0ZXN0X3NldHVwXzExZSAmJgogCSgKIAkJY2QgMTFlICYmCiAKQEAgLTM3NDQsNyArMzc5MSw3IEBACiAjICAgICAgICAgICAgIENPTkZMSUNUKHJlbmFtZS9yZW5hbWUpIHgvYyB2cyB4L2QgLT4geS93aGFtCiAjICAgICAgICAgICAgIEVSUk9SX01TRyhSZWZ1c2luZyB0byBsb3NlIGRpcnR5IGZpbGUgYXQgeS93aGFtKQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxMWYtc2V0dXA6IEF2b2lkIGRlbGV0aW5nIG5vdC11cHRvZGF0ZSB3aXRoIGRpciByZW5hbWUvcmVuYW1lKDJ0bzEpJyAnCit0ZXN0X3NldHVwXzExZiAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyAxMWYgJiYKIAkoCiAJCWNkIDExZiAmJgpAQCAtMzc3Myw5ICszODIwLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFmLWNoZWNrOiBBdm9pZCBkZWxldGluZyBub3QtdXB0b2RhdGUgd2l0aCBkaXIgcmVuYW1lL3JlbmFtZSgydG8xKScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMTFmOiBBdm9pZCBkZWxldGluZyBub3QtdXB0b2RhdGUgd2l0aCBkaXIgcmVuYW1lL3JlbmFtZSgydG8xKScgJworCXRlc3Rfc2V0dXBfMTFmICYmCiAJKAogCQljZCAxMWYgJiYKIApAQCAtMzgzMiw3ICszODgwLDcgQEAKICMgICBDb21taXQgQjogbm9kZTEve2xlYWYxLGxlYWYyLGxlYWY1fSwgbm9kZTIve2xlYWYzLGxlYWY0LGxlYWY2fQogIyAgIEV4cGVjdGVkOiBub2RlMS97bGVhZjEsbGVhZjIsbGVhZjUsbm9kZTIve2xlYWYzLGxlYWY0LGxlYWY2fX0KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTJhLXNldHVwOiBNb3Zpbmcgb25lIGRpcmVjdG9yeSBoaWVyYXJjaHkgaW50byBhbm90aGVyJyAnCit0ZXN0X3NldHVwXzEyYSAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyAxMmEgJiYKIAkoCiAJCWNkIDEyYSAmJgpAQCAtMzg2Miw5ICszOTEwLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTJhLWNoZWNrOiBNb3Zpbmcgb25lIGRpcmVjdG9yeSBoaWVyYXJjaHkgaW50byBhbm90aGVyJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxMmE6IE1vdmluZyBvbmUgZGlyZWN0b3J5IGhpZXJhcmNoeSBpbnRvIGFub3RoZXInICcKKwl0ZXN0X3NldHVwXzEyYSAmJgogCSgKIAkJY2QgMTJhICYmCiAKQEAgLTM5MTAsNyArMzk1OSw3IEBACiAjICAgICAgICAgVG8gd2hpY2gsIEkgY2FuIGRvIG5vIG1vcmUgdGhhbiBzaHJ1ZyBteSBzaG91bGRlcnMgYW5kIHNheSB0aGF0CiAjICAgICAgICAgZXZlbiBzaW1wbGUgcnVsZXMgZ2l2ZSB3ZWlyZCByZXN1bHRzIHdoZW4gZ2l2ZW4gd2VpcmQgaW5wdXRzLgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxMmItc2V0dXA6IE1vdmluZyB0d28gZGlyZWN0b3J5IGhpZXJhcmNoaWVzIGludG8gZWFjaCBvdGhlcicgJwordGVzdF9zZXR1cF8xMmIgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMTJiICYmCiAJKAogCQljZCAxMmIgJiYKQEAgLTM5MzgsOSArMzk4NywxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEyYi1jaGVjazogTW92aW5nIHR3byBkaXJlY3RvcnkgaGllcmFyY2hpZXMgaW50byBlYWNoIG90aGVyJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxMmI6IE1vdmluZyB0d28gZGlyZWN0b3J5IGhpZXJhcmNoaWVzIGludG8gZWFjaCBvdGhlcicgJworCXRlc3Rfc2V0dXBfMTJiICYmCiAJKAogCQljZCAxMmIgJiYKIApAQCAtMzk3Niw3ICs0MDI2LDcgQEAKICMgICBOT1RFOiBUaGlzIGlzICpleGFjdGx5KiBsaWtlIDEyYywgZXhjZXB0IHRoYXQgZXZlcnkgcGF0aCBpcyBtb2RpZmllZCBvbgogIyAgICAgICAgIGVhY2ggc2lkZSBvZiB0aGUgbWVyZ2UuCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEyYy1zZXR1cDogTW92aW5nIG9uZSBkaXJlY3RvcnkgaGllcmFyY2h5IGludG8gYW5vdGhlciB3LyBjb250ZW50IG1lcmdlJyAnCit0ZXN0X3NldHVwXzEyYyAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyAxMmMgJiYKIAkoCiAJCWNkIDEyYyAmJgpAQCAtNDAwOCw5ICs0MDU4LDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTJjLWNoZWNrOiBNb3Zpbmcgb25lIGRpcmVjdG9yeSBoaWVyYXJjaHkgaW50byBhbm90aGVyIHcvIGNvbnRlbnQgbWVyZ2UnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEyYzogTW92aW5nIG9uZSBkaXJlY3RvcnkgaGllcmFyY2h5IGludG8gYW5vdGhlciB3LyBjb250ZW50IG1lcmdlJyAnCisJdGVzdF9zZXR1cF8xMmMgJiYKIAkoCiAJCWNkIDEyYyAmJgogCkBAIC00MDUxLDYgKzQxMDIsMTIyIEBACiAJKQogJwogCisjIFRlc3RjYXNlIDEyZCwgUmVuYW1lL21lcmdlIG9mIHN1YmRpcmVjdG9yeSBpbnRvIHRoZSByb290CisjICAgQ29tbWl0IE86IGEvYi9zdWJkaXIvZm9vCisjICAgQ29tbWl0IEE6IHN1YmRpci9mb28KKyMgICBDb21taXQgQjogYS9iL3N1YmRpci9mb28sIGEvYi9iYXIKKyMgICBFeHBlY3RlZDogc3ViZGlyL2ZvbywgYmFyCisKK3Rlc3Rfc2V0dXBfMTJkICgpIHsKKwl0ZXN0X2NyZWF0ZV9yZXBvIDEyZCAmJgorCSgKKwkJY2QgMTJkICYmCisKKwkJbWtkaXIgLXAgYS9iL3N1YmRpciAmJgorCQl0ZXN0X2NvbW1pdCBhL2Ivc3ViZGlyL2ZvbyAmJgorCisJCWdpdCBicmFuY2ggTyAmJgorCQlnaXQgYnJhbmNoIEEgJiYKKwkJZ2l0IGJyYW5jaCBCICYmCisKKwkJZ2l0IGNoZWNrb3V0IEEgJiYKKwkJbWtkaXIgc3ViZGlyICYmCisJCWdpdCBtdiBhL2Ivc3ViZGlyL2Zvby50IHN1YmRpci9mb28udCAmJgorCQl0ZXN0X3RpY2sgJiYKKwkJZ2l0IGNvbW1pdCAtbSAiQSIgJiYKKworCQlnaXQgY2hlY2tvdXQgQiAmJgorCQl0ZXN0X2NvbW1pdCBhL2IvYmFyCisJKQorfQorCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxMmQ6IFJlbmFtZS9tZXJnZSBzdWJkaXIgaW50byB0aGUgcm9vdCwgdmFyaWFudCAxJyAnCisJdGVzdF9zZXR1cF8xMmQgJiYKKwkoCisJCWNkIDEyZCAmJgorCisJCWdpdCBjaGVja291dCBBXjAgJiYKKworCQlnaXQgLWMgbWVyZ2UuZGlyZWN0b3J5UmVuYW1lcz10cnVlIG1lcmdlIC1zIHJlY3Vyc2l2ZSBCXjAgJiYKKworCQlnaXQgbHMtZmlsZXMgLXMgPm91dCAmJgorCQl0ZXN0X2xpbmVfY291bnQgPSAyIG91dCAmJgorCisJCWdpdCByZXYtcGFyc2UgPmFjdHVhbCBcCisJCQlIRUFEOnN1YmRpci9mb28udCAgIEhFQUQ6YmFyLnQgJiYKKwkJZ2l0IHJldi1wYXJzZSA+ZXhwZWN0IFwKKwkJCU86YS9iL3N1YmRpci9mb28udCAgQjphL2IvYmFyLnQgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCisJCWdpdCBoYXNoLW9iamVjdCBiYXIudCA+YWN0dWFsICYmCisJCWdpdCByZXYtcGFyc2UgQjphL2IvYmFyLnQgPmV4cGVjdCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSBIRUFEOmEvYi9zdWJkaXIvZm9vLnQgJiYKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSBIRUFEOmEvYi9iYXIudCAmJgorCQl0ZXN0X3BhdGhfaXNfbWlzc2luZyBhLyAmJgorCQl0ZXN0X3BhdGhfaXNfZmlsZSBiYXIudAorCSkKKycKKworIyBUZXN0Y2FzZSAxMmUsIFJlbmFtZS9tZXJnZSBvZiBzdWJkaXJlY3RvcnkgaW50byB0aGUgcm9vdAorIyAgIENvbW1pdCBPOiBhL2IvZm9vCisjICAgQ29tbWl0IEE6IGZvbworIyAgIENvbW1pdCBCOiBhL2IvZm9vLCBhL2IvYmFyCisjICAgRXhwZWN0ZWQ6IGZvbywgYmFyCisKK3Rlc3Rfc2V0dXBfMTJlICgpIHsKKwl0ZXN0X2NyZWF0ZV9yZXBvIDEyZSAmJgorCSgKKwkJY2QgMTJlICYmCisKKwkJbWtkaXIgLXAgYS9iICYmCisJCXRlc3RfY29tbWl0IGEvYi9mb28gJiYKKworCQlnaXQgYnJhbmNoIE8gJiYKKwkJZ2l0IGJyYW5jaCBBICYmCisJCWdpdCBicmFuY2ggQiAmJgorCisJCWdpdCBjaGVja291dCBBICYmCisJCW1rZGlyIHN1YmRpciAmJgorCQlnaXQgbXYgYS9iL2Zvby50IGZvby50ICYmCisJCXRlc3RfdGljayAmJgorCQlnaXQgY29tbWl0IC1tICJBIiAmJgorCisJCWdpdCBjaGVja291dCBCICYmCisJCXRlc3RfY29tbWl0IGEvYi9iYXIKKwkpCit9CisKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEyZTogUmVuYW1lL21lcmdlIHN1YmRpciBpbnRvIHRoZSByb290LCB2YXJpYW50IDInICcKKwl0ZXN0X3NldHVwXzEyZSAmJgorCSgKKwkJY2QgMTJlICYmCisKKwkJZ2l0IGNoZWNrb3V0IEFeMCAmJgorCisJCWdpdCAtYyBtZXJnZS5kaXJlY3RvcnlSZW5hbWVzPXRydWUgbWVyZ2UgLXMgcmVjdXJzaXZlIEJeMCAmJgorCisJCWdpdCBscy1maWxlcyAtcyA+b3V0ICYmCisJCXRlc3RfbGluZV9jb3VudCA9IDIgb3V0ICYmCisKKwkJZ2l0IHJldi1wYXJzZSA+YWN0dWFsIFwKKwkJCUhFQUQ6Zm9vLnQgICBIRUFEOmJhci50ICYmCisJCWdpdCByZXYtcGFyc2UgPmV4cGVjdCBcCisJCQlPOmEvYi9mb28udCAgQjphL2IvYmFyLnQgJiYKKwkJdGVzdF9jbXAgZXhwZWN0IGFjdHVhbCAmJgorCisJCWdpdCBoYXNoLW9iamVjdCBiYXIudCA+YWN0dWFsICYmCisJCWdpdCByZXYtcGFyc2UgQjphL2IvYmFyLnQgPmV4cGVjdCAmJgorCQl0ZXN0X2NtcCBleHBlY3QgYWN0dWFsICYmCisKKwkJdGVzdF9tdXN0X2ZhaWwgZ2l0IHJldi1wYXJzZSBIRUFEOmEvYi9mb28udCAmJgorCQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LXBhcnNlIEhFQUQ6YS9iL2Jhci50ICYmCisJCXRlc3RfcGF0aF9pc19taXNzaW5nIGEvICYmCisJCXRlc3RfcGF0aF9pc19maWxlIGJhci50CisJKQorJworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgU0VDVElPTiAxMzogQ2hlY2tpbmcgaW5mb3JtYXRpb25hbCBhbmQgY29uZmxpY3QgbWVzc2FnZXMKICMKQEAgLTQwNjgsMTAgKzQyMzUsMTAgQEAKICMgICBDb21taXQgQjogei97YixjLGQsZS9mfQogIyAgIEV4cGVjdGVkOiB5L3tiLGMsZCxlL2Z9LCB3aXRoIG5vdGljZXMvY29uZmxpY3RzIGZvciBib3RoIHkvZCBhbmQgeS9lL2YKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTNhLXNldHVwOiBtZXNzYWdlcyBmb3IgbmV3bHkgYWRkZWQgZmlsZXMnICcKLQl0ZXN0X2NyZWF0ZV9yZXBvIDEzYSAmJgordGVzdF9zZXR1cF8xM2EgKCkgeworCXRlc3RfY3JlYXRlX3JlcG8gMTNhXyQxICYmCiAJKAotCQljZCAxM2EgJiYKKwkJY2QgMTNhXyQxICYmCiAKIAkJbWtkaXIgeiAmJgogCQllY2hvIGIgPnovYiAmJgpAQCAtNDA5NywxMSArNDI2NCwxMiBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzYS1jaGVjayhjb25mbGljdCk6IG1lc3NhZ2VzIGZvciBuZXdseSBhZGRlZCBmaWxlcycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMTNhKGNvbmZsaWN0KTogbWVzc2FnZXMgZm9yIG5ld2x5IGFkZGVkIGZpbGVzJyAnCisJdGVzdF9zZXR1cF8xM2EgY29uZmxpY3QgJiYKIAkoCi0JCWNkIDEzYSAmJgorCQljZCAxM2FfY29uZmxpY3QgJiYKIAogCQlnaXQgY2hlY2tvdXQgQV4wICYmCiAKQEAgLTQxMjEsOSArNDI4OSwxMCBAQAogCSkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTNhLWNoZWNrKGluZm8pOiBtZXNzYWdlcyBmb3IgbmV3bHkgYWRkZWQgZmlsZXMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzYShpbmZvKTogbWVzc2FnZXMgZm9yIG5ld2x5IGFkZGVkIGZpbGVzJyAnCisJdGVzdF9zZXR1cF8xM2EgaW5mbyAmJgogCSgKLQkJY2QgMTNhICYmCisJCWNkIDEzYV9pbmZvICYmCiAKIAkJZ2l0IHJlc2V0IC0taGFyZCAmJgogCQlnaXQgY2hlY2tvdXQgQV4wICYmCkBAIC00MTUzLDEwICs0MzIyLDEwIEBACiAjICAgRXhwZWN0ZWQ6IHkve2IsYyxkX21lcmdlZH0sIHdpdGggdHdvIGNvbmZsaWN0IG1lc3NhZ2VzIGZvciB5L2QsCiAjICAgICAgICAgICAgIG9uZSBhYm91dCBjb250ZW50LCBhbmQgb25lIGFib3V0IGZpbGUgbG9jYXRpb24KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTNiLXNldHVwOiBtZXNzYWdlcyBmb3IgdHJhbnNpdGl2ZSByZW5hbWUgd2l0aCBjb25mbGljdGVkIGNvbnRlbnQnICcKLQl0ZXN0X2NyZWF0ZV9yZXBvIDEzYiAmJgordGVzdF9zZXR1cF8xM2IgKCkgeworCXRlc3RfY3JlYXRlX3JlcG8gMTNiXyQxICYmCiAJKAotCQljZCAxM2IgJiYKKwkJY2QgMTNiXyQxICYmCiAKIAkJbWtkaXIgeCAmJgogCQlta2RpciB6ICYmCkBAIC00MTg1LDExICs0MzU0LDEyIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTNiLWNoZWNrKGNvbmZsaWN0KTogbWVzc2FnZXMgZm9yIHRyYW5zaXRpdmUgcmVuYW1lIHdpdGggY29uZmxpY3RlZCBjb250ZW50JyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxM2IoY29uZmxpY3QpOiBtZXNzYWdlcyBmb3IgdHJhbnNpdGl2ZSByZW5hbWUgd2l0aCBjb25mbGljdGVkIGNvbnRlbnQnICcKKwl0ZXN0X3NldHVwXzEzYiBjb25mbGljdCAmJgogCSgKLQkJY2QgMTNiICYmCisJCWNkIDEzYl9jb25mbGljdCAmJgogCiAJCWdpdCBjaGVja291dCBBXjAgJiYKIApAQCAtNDIwNyw5ICs0Mzc3LDEwIEBACiAJKQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxM2ItY2hlY2soaW5mbyk6IG1lc3NhZ2VzIGZvciB0cmFuc2l0aXZlIHJlbmFtZSB3aXRoIGNvbmZsaWN0ZWQgY29udGVudCcgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMTNiKGluZm8pOiBtZXNzYWdlcyBmb3IgdHJhbnNpdGl2ZSByZW5hbWUgd2l0aCBjb25mbGljdGVkIGNvbnRlbnQnICcKKwl0ZXN0X3NldHVwXzEzYiBpbmZvICYmCiAJKAotCQljZCAxM2IgJiYKKwkJY2QgMTNiX2luZm8gJiYKIAogCQlnaXQgcmVzZXQgLS1oYXJkICYmCiAJCWdpdCBjaGVja291dCBBXjAgJiYKQEAgLTQyMzgsMTAgKzQ0MDksMTAgQEAKICMgICAgICAgICAgICAgZCBhbmQgQiBoYWQgZnVsbCBrbm93bGVkZ2UsIGJ1dCB0aGF0J3MgYSBzbGlwcGVyeSBzbG9wZSBhcwogIyAgICAgICAgICAgICBzaG93biBpbiB0ZXN0Y2FzZSAxM2QuCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzYy1zZXR1cDogbWVzc2FnZXMgZm9yIHJlbmFtZS9yZW5hbWUoMXRvMSkgdmlhIHRyYW5zaXRpdmUgcmVuYW1lJyAnCi0JdGVzdF9jcmVhdGVfcmVwbyAxM2MgJiYKK3Rlc3Rfc2V0dXBfMTNjICgpIHsKKwl0ZXN0X2NyZWF0ZV9yZXBvIDEzY18kMSAmJgogCSgKLQkJY2QgMTNjICYmCisJCWNkIDEzY18kMSAmJgogCiAJCW1rZGlyIHggJiYKIAkJbWtkaXIgeiAmJgpAQCAtNDI2OSwxMSArNDQ0MCwxMiBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzYy1jaGVjayhjb25mbGljdCk6IG1lc3NhZ2VzIGZvciByZW5hbWUvcmVuYW1lKDF0bzEpIHZpYSB0cmFuc2l0aXZlIHJlbmFtZScgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnMTNjKGNvbmZsaWN0KTogbWVzc2FnZXMgZm9yIHJlbmFtZS9yZW5hbWUoMXRvMSkgdmlhIHRyYW5zaXRpdmUgcmVuYW1lJyAnCisJdGVzdF9zZXR1cF8xM2MgY29uZmxpY3QgJiYKIAkoCi0JCWNkIDEzYyAmJgorCQljZCAxM2NfY29uZmxpY3QgJiYKIAogCQlnaXQgY2hlY2tvdXQgQV4wICYmCiAKQEAgLTQyOTAsOSArNDQ2MiwxMCBAQAogCSkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTNjLWNoZWNrKGluZm8pOiBtZXNzYWdlcyBmb3IgcmVuYW1lL3JlbmFtZSgxdG8xKSB2aWEgdHJhbnNpdGl2ZSByZW5hbWUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzYyhpbmZvKTogbWVzc2FnZXMgZm9yIHJlbmFtZS9yZW5hbWUoMXRvMSkgdmlhIHRyYW5zaXRpdmUgcmVuYW1lJyAnCisJdGVzdF9zZXR1cF8xM2MgaW5mbyAmJgogCSgKLQkJY2QgMTNjICYmCisJCWNkIDEzY19pbmZvICYmCiAKIAkJZ2l0IHJlc2V0IC0taGFyZCAmJgogCQlnaXQgY2hlY2tvdXQgQV4wICYmCkBAIC00MzI0LDEwICs0NDk3LDEwIEBACiAjICAgICAgICAgICAgICAgKiBCIHJlbmFtZXMgYS95IHRvIGMveSwgYW5kIEEgcmVuYW1lcyBjLy0+ZC8gPT4gYS95IC0+IGQveQogIyAgICAgICAgICAgICAgIE5vIGNvbmZsaWN0IGluIHdoZXJlIGEveSBlbmRzIHVwLCBzbyBwdXQgaXQgaW4gZC95LgogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcxM2Qtc2V0dXA6IG1lc3NhZ2VzIGZvciByZW5hbWUvcmVuYW1lKDF0bzEpIHZpYSBkdWFsIHRyYW5zaXRpdmUgcmVuYW1lJyAnCi0JdGVzdF9jcmVhdGVfcmVwbyAxM2QgJiYKK3Rlc3Rfc2V0dXBfMTNkICgpIHsKKwl0ZXN0X2NyZWF0ZV9yZXBvIDEzZF8kMSAmJgogCSgKLQkJY2QgMTNkICYmCisJCWNkIDEzZF8kMSAmJgogCiAJCW1rZGlyIGEgJiYKIAkJbWtkaXIgYiAmJgpAQCAtNDM1NiwxMSArNDUyOSwxMiBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzZC1jaGVjayhjb25mbGljdCk6IG1lc3NhZ2VzIGZvciByZW5hbWUvcmVuYW1lKDF0bzEpIHZpYSBkdWFsIHRyYW5zaXRpdmUgcmVuYW1lJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICcxM2QoY29uZmxpY3QpOiBtZXNzYWdlcyBmb3IgcmVuYW1lL3JlbmFtZSgxdG8xKSB2aWEgZHVhbCB0cmFuc2l0aXZlIHJlbmFtZScgJworCXRlc3Rfc2V0dXBfMTNkIGNvbmZsaWN0ICYmCiAJKAotCQljZCAxM2QgJiYKKwkJY2QgMTNkX2NvbmZsaWN0ICYmCiAKIAkJZ2l0IGNoZWNrb3V0IEFeMCAmJgogCkBAIC00MzgwLDkgKzQ1NTQsMTAgQEAKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzZC1jaGVjayhpbmZvKTogbWVzc2FnZXMgZm9yIHJlbmFtZS9yZW5hbWUoMXRvMSkgdmlhIGR1YWwgdHJhbnNpdGl2ZSByZW5hbWUnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzZChpbmZvKTogbWVzc2FnZXMgZm9yIHJlbmFtZS9yZW5hbWUoMXRvMSkgdmlhIGR1YWwgdHJhbnNpdGl2ZSByZW5hbWUnICcKKwl0ZXN0X3NldHVwXzEzZCBpbmZvICYmCiAJKAotCQljZCAxM2QgJiYKKwkJY2QgMTNkX2luZm8gJiYKIAogCQlnaXQgcmVzZXQgLS1oYXJkICYmCiAJCWdpdCBjaGVja291dCBBXjAgJiYKQEAgLTQ0NDgsNyArNDYyMyw3IEBACiAjICAgICAgICAgIGluIHRoZSBvdXRlciBtZXJnZSBmb3IgdGhpcyBzcGVjaWFsIGtpbmQgb2Ygc2V0dXAsIGJ1dCBpdCBhdAogIyAgICAgICAgICBsZWFzdCBhdm9pZHMgaGl0dGluZyBhIEJVRygpLgogIwotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMTNlLXNldHVwOiBkaXJlY3RvcnkgcmVuYW1lIGRldGVjdGlvbiBpbiByZWN1cnNpdmUgY2FzZScgJwordGVzdF9zZXR1cF8xM2UgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMTNlICYmCiAJKAogCQljZCAxM2UgJiYKQEAgLTQ0OTMsOSArNDY2OCwxMCBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiRCIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzZS1jaGVjazogZGlyZWN0b3J5IHJlbmFtZSBkZXRlY3Rpb24gaW4gcmVjdXJzaXZlIGNhc2UnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzEzZTogZGlyZWN0b3J5IHJlbmFtZSBkZXRlY3Rpb24gaW4gcmVjdXJzaXZlIGNhc2UnICcKKwl0ZXN0X3NldHVwXzEzZSAmJgogCSgKIAkJY2QgMTNlICYmCiAKZGlmZiAtLWdpdCBhL3QvdDYwNDYtbWVyZ2Utc2tpcC11bm5lZWRlZC11cGRhdGVzLnNoIGIvdC90NjA0Ni1tZXJnZS1za2lwLXVubmVlZGVkLXVwZGF0ZXMuc2gKaW5kZXggM2E0NzYyMy4uYjdlNDY2OSAxMDA3NTUKLS0tIGEvdC90NjA0Ni1tZXJnZS1za2lwLXVubmVlZGVkLXVwZGF0ZXMuc2gKKysrIGIvdC90NjA0Ni1tZXJnZS1za2lwLXVubmVlZGVkLXVwZGF0ZXMuc2gKQEAgLTM2LDEwICszNiwxMCBAQAogIyAgIENvbW1pdCBCOiBiXzMKICMgICBFeHBlY3RlZDogYl8yCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFhLXNldHVwOiBNb2RpZnkoQSkvTW9kaWZ5KEIpLCBjaGFuZ2Ugb24gQiBzdWJzZXQgb2YgQScgJwotCXRlc3RfY3JlYXRlX3JlcG8gMWEgJiYKK3Rlc3Rfc2V0dXBfMWEgKCkgeworCXRlc3RfY3JlYXRlX3JlcG8gMWFfJDEgJiYKIAkoCi0JCWNkIDFhICYmCisJCWNkIDFhXyQxICYmCiAKIAkJdGVzdF93cml0ZV9saW5lcyAxIDIgMyA0IDUgNiA3IDggOSAxMCA+YiAmJgogCQlnaXQgYWRkIGIgJiYKQEAgLTYyLDEzICs2MiwxMiBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFhLWNoZWNrLUw6IE1vZGlmeShBKS9Nb2RpZnkoQiksIGNoYW5nZSBvbiBCIHN1YnNldCBvZiBBJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgMWEgcmVzZXQgLS1oYXJkIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IC1DIDFhIGNsZWFuIC1mZCIgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFhLUw6IE1vZGlmeShBKS9Nb2RpZnkoQiksIGNoYW5nZSBvbiBCIHN1YnNldCBvZiBBJyAnCisJdGVzdF9zZXR1cF8xYSBMICYmCiAJKAotCQljZCAxYSAmJgorCQljZCAxYV9MICYmCiAKIAkJZ2l0IGNoZWNrb3V0IEFeMCAmJgogCkBAIC05NiwxMSArOTUsMTAgQEAKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFhLWNoZWNrLVI6IE1vZGlmeShBKS9Nb2RpZnkoQiksIGNoYW5nZSBvbiBCIHN1YnNldCBvZiBBJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgMWEgcmVzZXQgLS1oYXJkIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IC1DIDFhIGNsZWFuIC1mZCIgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzFhLVI6IE1vZGlmeShBKS9Nb2RpZnkoQiksIGNoYW5nZSBvbiBCIHN1YnNldCBvZiBBJyAnCisJdGVzdF9zZXR1cF8xYSBSICYmCiAJKAotCQljZCAxYSAmJgorCQljZCAxYV9SICYmCiAKIAkJZ2l0IGNoZWNrb3V0IEJeMCAmJgogCkBAIC0xMzMsMTAgKzEzMSwxMCBAQAogIyAgIENvbW1pdCBCOiBjXzEKICMgICBFeHBlY3RlZDogY18yCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzJhLXNldHVwOiBNb2RpZnkoQSkvcmVuYW1lKEIpJyAnCi0JdGVzdF9jcmVhdGVfcmVwbyAyYSAmJgordGVzdF9zZXR1cF8yYSAoKSB7CisJdGVzdF9jcmVhdGVfcmVwbyAyYV8kMSAmJgogCSgKLQkJY2QgMmEgJiYKKwkJY2QgMmFfJDEgJiYKIAogCQl0ZXN0X3NlcSAxIDEwID5iICYmCiAJCWdpdCBhZGQgYiAmJgpAQCAtMTU4LDEzICsxNTYsMTIgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcyYS1jaGVjay1MOiBNb2RpZnkvcmVuYW1lLCBtZXJnZSBpbnRvIG1vZGlmeSBzaWRlJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgMmEgcmVzZXQgLS1oYXJkIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IC1DIDJhIGNsZWFuIC1mZCIgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzJhLUw6IE1vZGlmeS9yZW5hbWUsIG1lcmdlIGludG8gbW9kaWZ5IHNpZGUnICcKKwl0ZXN0X3NldHVwXzJhIEwgJiYKIAkoCi0JCWNkIDJhICYmCisJCWNkIDJhX0wgJiYKIAogCQlnaXQgY2hlY2tvdXQgQV4wICYmCiAKQEAgLTE4OSwxMSArMTg2LDEwIEBACiAJKQogJwogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICcyYS1jaGVjay1SOiBNb2RpZnkvcmVuYW1lLCBtZXJnZSBpbnRvIHJlbmFtZSBzaWRlJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgMmEgcmVzZXQgLS1oYXJkIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IC1DIDJhIGNsZWFuIC1mZCIgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzJhLVI6IE1vZGlmeS9yZW5hbWUsIG1lcmdlIGludG8gcmVuYW1lIHNpZGUnICcKKwl0ZXN0X3NldHVwXzJhIFIgJiYKIAkoCi0JCWNkIDJhICYmCisJCWNkIDJhX1IgJiYKIAogCQlnaXQgY2hlY2tvdXQgQl4wICYmCiAKQEAgLTIyNCwxMCArMjIwLDEwIEBACiAjICAgQ29tbWl0IEI6IGJfMwogIyAgIEV4cGVjdGVkOiBjXzIKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMmItc2V0dXA6IFJlbmFtZStNb2QoQSkvTW9kKEIpLCBCIG1vZHMgc3Vic2V0IG9mIEEnICcKLQl0ZXN0X2NyZWF0ZV9yZXBvIDJiICYmCit0ZXN0X3NldHVwXzJiICgpIHsKKwl0ZXN0X2NyZWF0ZV9yZXBvIDJiXyQxICYmCiAJKAotCQljZCAyYiAmJgorCQljZCAyYl8kMSAmJgogCiAJCXRlc3Rfd3JpdGVfbGluZXMgMSAyIDMgNCA1IDYgNyA4IDkgMTAgPmIgJiYKIAkJZ2l0IGFkZCBiICYmCkBAIC0yNTEsMTMgKzI0NywxMiBAQAogCQl0ZXN0X3RpY2sgJiYKIAkJZ2l0IGNvbW1pdCAtbSAiQiIKIAkpCi0nCit9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzJiLWNoZWNrLUw6IFJlbmFtZStNb2QoQSkvTW9kKEIpLCBCIG1vZHMgc3Vic2V0IG9mIEEnICcKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCAtQyAyYiByZXNldCAtLWhhcmQiICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgMmIgY2xlYW4gLWZkIiAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnMmItTDogUmVuYW1lK01vZChBKS9Nb2QoQiksIEIgbW9kcyBzdWJzZXQgb2YgQScgJworCXRlc3Rfc2V0dXBfMmIgTCAmJgogCSgKLQkJY2QgMmIgJiYKKwkJY2QgMmJfTCAmJgogCiAJCWdpdCBjaGVja291dCBBXjAgJiYKIApAQCAtMjg4LDExICsyODMsMTAgQEAKIAkpCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzJiLWNoZWNrLVI6IFJlbmFtZStNb2QoQSkvTW9kKEIpLCBCIG1vZHMgc3Vic2V0IG9mIEEnICcKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCAtQyAyYiByZXNldCAtLWhhcmQiICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgMmIgY2xlYW4gLWZkIiAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnMmItUjogUmVuYW1lK01vZChBKS9Nb2QoQiksIEIgbW9kcyBzdWJzZXQgb2YgQScgJworCXRlc3Rfc2V0dXBfMmIgUiAmJgogCSgKLQkJY2QgMmIgJiYKKwkJY2QgMmJfUiAmJgogCiAJCWdpdCBjaGVja291dCBCXjAgJiYKIApAQCAtMzMyLDcgKzMyNiw3IEBACiAjICAgICAgICAgc2tpcCB0aGUgdXBkYXRlLCB0aGVuIHdlJ3JlIGluIHRyb3VibGUuICBUaGlzIHRlc3QgdmVyaWZpZXMgd2UgZG8KICMgICAgICAgICBub3QgbWFrZSB0aGF0IHBhcnRpY3VsYXIgbWlzdGFrZS4KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMmMtc2V0dXA6IE1vZGlmeSBiICYgYWRkIGMgVlMgcmVuYW1lIGItPmMnICcKK3Rlc3Rfc2V0dXBfMmMgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gMmMgJiYKIAkoCiAJCWNkIDJjICYmCkBAIC0zNTgsOSArMzUyLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnMmMtY2hlY2s6IE1vZGlmeSBiICYgYWRkIGMgVlMgcmVuYW1lIGItPmMnICcKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzJjOiBNb2RpZnkgYiAmIGFkZCBjIFZTIHJlbmFtZSBiLT5jJyAnCisJdGVzdF9zZXR1cF8yYyAmJgogCSgKIAkJY2QgMmMgJiYKIApAQCAtNDI4LDEwICs0MjMsMTAgQEAKICMgICBDb21taXQgQjogYnFfMSwgYmFyL3doYXRldmVyCiAjICAgRXhwZWN0ZWQ6IGJhci97YnFfMiwgd2hhdGV2ZXJ9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzNhLXNldHVwOiBicV8xLT5mb28vYnFfMiBvbiBBLCBmb28vLT5iYXIvIG9uIEInICcKLQl0ZXN0X2NyZWF0ZV9yZXBvIDNhICYmCit0ZXN0X3NldHVwXzNhICgpIHsKKwl0ZXN0X2NyZWF0ZV9yZXBvIDNhXyQxICYmCiAJKAotCQljZCAzYSAmJgorCQljZCAzYV8kMSAmJgogCiAJCW1rZGlyIGZvbyAmJgogCQl0ZXN0X3NlcSAxIDEwID5icSAmJgpAQCAtNDU2LDEzICs0NTEsMTIgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICczYS1jaGVjay1MOiBicV8xLT5mb28vYnFfMiBvbiBBLCBmb28vLT5iYXIvIG9uIEInICcKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCAtQyAzYSByZXNldCAtLWhhcmQiICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgM2EgY2xlYW4gLWZkIiAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnM2EtTDogYnFfMS0+Zm9vL2JxXzIgb24gQSwgZm9vLy0+YmFyLyBvbiBCJyAnCisJdGVzdF9zZXR1cF8zYSBMICYmCiAJKAotCQljZCAzYSAmJgorCQljZCAzYV9MICYmCiAKIAkJZ2l0IGNoZWNrb3V0IEFeMCAmJgogCkBAIC00ODcsMTEgKzQ4MSwxMCBAQAogCSkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnM2EtY2hlY2stUjogYnFfMS0+Zm9vL2JxXzIgb24gQSwgZm9vLy0+YmFyLyBvbiBCJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgM2EgcmVzZXQgLS1oYXJkIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IC1DIDNhIGNsZWFuIC1mZCIgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzNhLVI6IGJxXzEtPmZvby9icV8yIG9uIEEsIGZvby8tPmJhci8gb24gQicgJworCXRlc3Rfc2V0dXBfM2EgUiAmJgogCSgKLQkJY2QgM2EgJiYKKwkJY2QgM2FfUiAmJgogCiAJCWdpdCBjaGVja291dCBCXjAgJiYKIApAQCAtNTIyLDEwICs1MTUsMTAgQEAKICMgICBDb21taXQgQjogYnFfMiwgYmFyL3doYXRldmVyCiAjICAgRXhwZWN0ZWQ6IGJhci97YnFfMiwgd2hhdGV2ZXJ9CiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzNiLXNldHVwOiBicV8xLT5mb28vYnFfMiBvbiBBLCBmb28vLT5iYXIvIG9uIEInICcKLQl0ZXN0X2NyZWF0ZV9yZXBvIDNiICYmCit0ZXN0X3NldHVwXzNiICgpIHsKKwl0ZXN0X2NyZWF0ZV9yZXBvIDNiXyQxICYmCiAJKAotCQljZCAzYiAmJgorCQljZCAzYl8kMSAmJgogCiAJCW1rZGlyIGZvbyAmJgogCQl0ZXN0X3NlcSAxIDEwID5icSAmJgpAQCAtNTUwLDEzICs1NDMsMTIgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICczYi1jaGVjay1MOiBicV8xLT5mb28vYnFfMiBvbiBBLCBmb28vLT5iYXIvIG9uIEInICcKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCAtQyAzYiByZXNldCAtLWhhcmQiICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgM2IgY2xlYW4gLWZkIiAmJgordGVzdF9leHBlY3Rfc3VjY2VzcyAnM2ItTDogYnFfMS0+Zm9vL2JxXzIgb24gQSwgZm9vLy0+YmFyLyBvbiBCJyAnCisJdGVzdF9zZXR1cF8zYiBMICYmCiAJKAotCQljZCAzYiAmJgorCQljZCAzYl9MICYmCiAKIAkJZ2l0IGNoZWNrb3V0IEFeMCAmJgogCkBAIC01ODEsMTEgKzU3MywxMCBAQAogCSkKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnM2ItY2hlY2stUjogYnFfMS0+Zm9vL2JxXzIgb24gQSwgZm9vLy0+YmFyLyBvbiBCJyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgM2IgcmVzZXQgLS1oYXJkIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IC1DIDNiIGNsZWFuIC1mZCIgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzNiLVI6IGJxXzEtPmZvby9icV8yIG9uIEEsIGZvby8tPmJhci8gb24gQicgJworCXRlc3Rfc2V0dXBfM2IgUiAmJgogCSgKLQkJY2QgM2IgJiYKKwkJY2QgM2JfUiAmJgogCiAJCWdpdCBjaGVja291dCBCXjAgJiYKIApAQCAtNjIxLDcgKzYxMiw3IEBACiAjICAgV29ya2luZyBjb3B5OiBiXzQKICMgICBFeHBlY3RlZDogYl8yIGZvciBtZXJnZSwgYl80IGluIHdvcmtpbmcgY29weQogCi10ZXN0X2V4cGVjdF9zdWNjZXNzICc0YS1zZXR1cDogQ2hhbmdlIG9uIEEsIGNoYW5nZSBvbiBCIHN1YnNldCBvZiBBLCBkaXJ0eSBtb2RzIHByZXNlbnQnICcKK3Rlc3Rfc2V0dXBfNGEgKCkgewogCXRlc3RfY3JlYXRlX3JlcG8gNGEgJiYKIAkoCiAJCWNkIDRhICYmCkBAIC02NDcsNyArNjM4LDcgQEAKIAkJdGVzdF90aWNrICYmCiAJCWdpdCBjb21taXQgLW0gIkIiCiAJKQotJworfQogCiAjIE5PVEU6IEZvciBhcyBsb25nIGFzIHdlIGNvbnRpbnVlIHVzaW5nIHVucGFja190cmVlcygpIHdpdGhvdXQgaW5kZXhfb25seQogIyAgIHNldCB0byB0cnVlLCBpdCB3aWxsIGVycm9yIG91dCBvbiBhIGNhc2UgbGlrZSB0aGlzIGNsYWltaW5nIHRoZSB0aGUgbG9jYWxseQpAQCAtNjU1LDkgKzY0Niw4IEBACiAjICAgY29ycmVjdCByZXF1aXJlcyBkb2luZyB0aGUgbWVyZ2UgaW4tbWVtb3J5IGZpcnN0LCB0aGVuIHJlYWxpemluZyB0aGF0IG5vCiAjICAgdXBkYXRlcyB0byB0aGUgZmlsZSBhcmUgbmVjZXNzYXJ5LCBhbmQgdGh1cyB0aGF0IHdlIGNhbiBqdXN0IGxlYXZlIHRoZSBwYXRoCiAjICAgYWxvbmUuCi10ZXN0X2V4cGVjdF9mYWlsdXJlICc0YS1jaGVjazogQ2hhbmdlIG9uIEEsIGNoYW5nZSBvbiBCIHN1YnNldCBvZiBBLCBkaXJ0eSBtb2RzIHByZXNlbnQnICcKLQl0ZXN0X3doZW5fZmluaXNoZWQgImdpdCAtQyA0YSByZXNldCAtLWhhcmQiICYmCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgNGEgY2xlYW4gLWZkIiAmJgordGVzdF9leHBlY3RfZmFpbHVyZSAnNGE6IENoYW5nZSBvbiBBLCBjaGFuZ2Ugb24gQiBzdWJzZXQgb2YgQSwgZGlydHkgbW9kcyBwcmVzZW50JyAnCisJdGVzdF9zZXR1cF80YSAmJgogCSgKIAkJY2QgNGEgJiYKIApAQCAtNjk1LDcgKzY4NSw3IEBACiAjICAgV29ya2luZyBjb3B5OiBjXzQKICMgICBFeHBlY3RlZDogY18yCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJzRiLXNldHVwOiBSZW5hbWUrTW9kKEEpL01vZChCKSwgY2hhbmdlIG9uIEIgc3Vic2V0IG9mIEEsIGRpcnR5IG1vZHMgcHJlc2VudCcgJwordGVzdF9zZXR1cF80YiAoKSB7CiAJdGVzdF9jcmVhdGVfcmVwbyA0YiAmJgogCSgKIAkJY2QgNGIgJiYKQEAgLTcyMiwxMSArNzEyLDEwIEBACiAJCXRlc3RfdGljayAmJgogCQlnaXQgY29tbWl0IC1tICJCIgogCSkKLScKK30KIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnNGItY2hlY2s6IFJlbmFtZStNb2QoQSkvTW9kKEIpLCBjaGFuZ2Ugb24gQiBzdWJzZXQgb2YgQSwgZGlydHkgbW9kcyBwcmVzZW50JyAnCi0JdGVzdF93aGVuX2ZpbmlzaGVkICJnaXQgLUMgNGIgcmVzZXQgLS1oYXJkIiAmJgotCXRlc3Rfd2hlbl9maW5pc2hlZCAiZ2l0IC1DIDRiIGNsZWFuIC1mZCIgJiYKK3Rlc3RfZXhwZWN0X3N1Y2Nlc3MgJzRiOiBSZW5hbWUrTW9kKEEpL01vZChCKSwgY2hhbmdlIG9uIEIgc3Vic2V0IG9mIEEsIGRpcnR5IG1vZHMgcHJlc2VudCcgJworCXRlc3Rfc2V0dXBfNGIgJiYKIAkoCiAJCWNkIDRiICYmCiAKZGlmZiAtLWdpdCBhL3QvdDYxMDItcmV2LWxpc3QtdW5leHBlY3RlZC1vYmplY3RzLnNoIGIvdC90NjEwMi1yZXYtbGlzdC11bmV4cGVjdGVkLW9iamVjdHMuc2gKaW5kZXggMjg2MTFjOS4uNTJjZGUwOSAxMDA3NTUKLS0tIGEvdC90NjEwMi1yZXYtbGlzdC11bmV4cGVjdGVkLW9iamVjdHMuc2gKKysrIGIvdC90NjEwMi1yZXYtbGlzdC11bmV4cGVjdGVkLW9iamVjdHMuc2gKQEAgLTUyLDcgKzUyLDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyAndHJhdmVyc2UgdW5leHBlY3RlZCBub24tY29tbWl0IHBhcmVudCAoc2VlbiknICcKLQl0ZXN0X211c3RfZmFpbCBnaXQgcmV2LWxpc3QgLS1vYmplY3RzICRjb21taXQgJGJyb2tlbl9jb21taXQgXAorCXRlc3RfbXVzdF9mYWlsIGdpdCByZXYtbGlzdCAtLW9iamVjdHMgJGJsb2IgJGJyb2tlbl9jb21taXQgXAogCQk+b3V0cHV0IDI+JjEgJiYKIAl0ZXN0X2kxOG5ncmVwICJub3QgYSBjb21taXQiIG91dHB1dAogJwpkaWZmIC0tZ2l0IGEvdC90NzAwNC10YWcuc2ggYi90L3Q3MDA0LXRhZy5zaAppbmRleCA4MGViMTNkLi5iYzRkYTAxIDEwMDc1NQotLS0gYS90L3Q3MDA0LXRhZy5zaAorKysgYi90L3Q3MDA0LXRhZy5zaApAQCAtMTQyMCw3ICsxNDIwLDcgQEAKIGdldF90YWdfaGVhZGVyIHJldXNlICRjb21taXQgY29tbWl0ICR0aW1lID5leHBlY3QKIGVjaG8gIkFuIGFubm90YXRpb24gdG8gYmUgcmV1c2VkIiA+PiBleHBlY3QKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgXAotCSdvdmVyd3JpdGluZyBhbiBhbm5vdGVkIHRhZyBzaG91bGQgdXNlIGl0cyBwcmV2aW91cyBib2R5JyAnCisJJ292ZXJ3cml0aW5nIGFuIGFubm90YXRlZCB0YWcgc2hvdWxkIHVzZSBpdHMgcHJldmlvdXMgYm9keScgJwogCWdpdCB0YWcgLWEgLW0gIkFuIGFubm90YXRpb24gdG8gYmUgcmV1c2VkIiByZXVzZSAmJgogCUdJVF9FRElUT1I9dHJ1ZSBnaXQgdGFnIC1mIC1hIHJldXNlICYmCiAJZ2V0X3RhZ19tc2cgcmV1c2UgPmFjdHVhbCAmJgpkaWZmIC0tZ2l0IGEvdC90NzAxMi1za2lwLXdvcmt0cmVlLXdyaXRpbmcuc2ggYi90L3Q3MDEyLXNraXAtd29ya3RyZWUtd3JpdGluZy5zaAppbmRleCA5ZDFhYmU1Li43NDc2NzgxIDEwMDc1NQotLS0gYS90L3Q3MDEyLXNraXAtd29ya3RyZWUtd3JpdGluZy5zaAorKysgYi90L3Q3MDEyLXNraXAtd29ya3RyZWUtd3JpdGluZy5zaApAQCAtMTM0LDYgKzEzNCwyMSBAQAogCXRlc3RfaTE4bmNtcCBleHBlY3RlZCByZXN1bHQKICcKIAordGVzdF9leHBlY3Rfc3VjY2VzcyAnLS1pZ25vcmUtc2tpcC13b3JrdHJlZS1lbnRyaWVzIGxlYXZlcyB3b3JrdHJlZSBhbG9uZScgJworCXRlc3RfY29tbWl0IGtlZXAtbWUgJiYKKwlnaXQgdXBkYXRlLWluZGV4IC0tc2tpcC13b3JrdHJlZSBrZWVwLW1lLnQgJiYKKwlybSBrZWVwLW1lLnQgJiYKKworCTogaWdub3JpbmcgdGhlIHdvcmt0cmVlICYmCisJZ2l0IHVwZGF0ZS1pbmRleCAtLXJlbW92ZSAtLWlnbm9yZS1za2lwLXdvcmt0cmVlLWVudHJpZXMga2VlcC1tZS50ICYmCisJZ2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgLS1leGl0LWNvZGUgSEVBRCAmJgorCisJOiBub3QgaWdub3JpbmcgdGhlIHdvcmt0cmVlLCBhIGRlbGV0aW9uIGlzIHN0YWdlZCAmJgorCWdpdCB1cGRhdGUtaW5kZXggLS1yZW1vdmUga2VlcC1tZS50ICYmCisJdGVzdF9tdXN0X2ZhaWwgZ2l0IGRpZmYtaW5kZXggLS1jYWNoZWQgLS1leGl0LWNvZGUgSEVBRCBcCisJCS0tZGlmZi1maWx0ZXI9RCAtLSBrZWVwLW1lLnQKKycKKwogI1RPRE8gdGVzdF9leHBlY3RfZmFpbHVyZSAnZ2l0LWFwcGx5IGFkZHMgZmlsZScgZmFsc2UKICNUT0RPIHRlc3RfZXhwZWN0X2ZhaWx1cmUgJ2dpdC1hcHBseSB1cGRhdGVzIGZpbGUnIGZhbHNlCiAjVE9ETyB0ZXN0X2V4cGVjdF9mYWlsdXJlICdnaXQtYXBwbHkgcmVtb3ZlcyBmaWxlJyBmYWxzZQpkaWZmIC0tZ2l0IGEvdC90NzAzMC12ZXJpZnktdGFnLnNoIGIvdC90NzAzMC12ZXJpZnktdGFnLnNoCmluZGV4IDA0MWUzMTkuLjhmMDc3YmUgMTAwNzU1Ci0tLSBhL3QvdDcwMzAtdmVyaWZ5LXRhZy5zaAorKysgYi90L3Q3MDMwLXZlcmlmeS10YWcuc2gKQEAgLTQ0LDggKzQ0LDggQEAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgR1BHU00gJ2NyZWF0ZSBzaWduZWQgdGFncyB4NTA5ICcgJwogCXRlc3RfY29uZmlnIGdwZy5mb3JtYXQgeDUwOSAmJgogCXRlc3RfY29uZmlnIHVzZXIuc2lnbmluZ2tleSAkR0lUX0NPTU1JVFRFUl9FTUFJTCAmJgotCWVjaG8gOSA+ZmlsZSAmJiB0ZXN0X3RpY2sgJiYgZ2l0IGNvbW1pdCAtYSAtbSAibmluZXRoIGdwZ3NtLXNpZ25lZCIgJiYKLQlnaXQgdGFnIC1zIC1tIG5pbmV0aCBuaW5ldGgtc2lnbmVkLXg1MDkKKwllY2hvIDkgPmZpbGUgJiYgdGVzdF90aWNrICYmIGdpdCBjb21taXQgLWEgLW0gIm5pbnRoIGdwZ3NtLXNpZ25lZCIgJiYKKwlnaXQgdGFnIC1zIC1tIG5pbnRoIG5pbnRoLXNpZ25lZC14NTA5CiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgR1BHICd2ZXJpZnkgYW5kIHNob3cgc2lnbmF0dXJlcycgJwpAQCAtODAsMTAgKzgwLDEwIEBACiAnCiAKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgR1BHU00gJ3ZlcmlmeSBhbmQgc2hvdyBzaWduYXR1cmVzIHg1MDknICcKLQlnaXQgdmVyaWZ5LXRhZyBuaW5ldGgtc2lnbmVkLXg1MDkgMj5hY3R1YWwgJiYKKwlnaXQgdmVyaWZ5LXRhZyBuaW50aC1zaWduZWQteDUwOSAyPmFjdHVhbCAmJgogCWdyZXAgIkdvb2Qgc2lnbmF0dXJlIGZyb20iIGFjdHVhbCAmJgogCSEgZ3JlcCAiQkFEIHNpZ25hdHVyZSBmcm9tIiBhY3R1YWwgJiYKLQllY2hvIG5pbmV0aC1zaWduZWQteDUwOSBPSworCWVjaG8gbmludGgtc2lnbmVkLXg1MDkgT0sKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBHUEcgJ2RldGVjdCBmdWRnZWQgc2lnbmF0dXJlJyAnCkBAIC0xMjcsMTAgKzEyNywxMCBAQAogJwogCiB0ZXN0X2V4cGVjdF9zdWNjZXNzIEdQR1NNICd2ZXJpZnkgc2lnbmF0dXJlcyB3aXRoIC0tcmF3IHg1MDknICcKLQlnaXQgdmVyaWZ5LXRhZyAtLXJhdyBuaW5ldGgtc2lnbmVkLXg1MDkgMj5hY3R1YWwgJiYKKwlnaXQgdmVyaWZ5LXRhZyAtLXJhdyBuaW50aC1zaWduZWQteDUwOSAyPmFjdHVhbCAmJgogCWdyZXAgIkdPT0RTSUciIGFjdHVhbCAmJgogCSEgZ3JlcCAiQkFEU0lHIiBhY3R1YWwgJiYKLQllY2hvIG5pbmV0aC1zaWduZWQteDUwOSBPSworCWVjaG8gbmludGgtc2lnbmVkLXg1MDkgT0sKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBHUEcgJ3ZlcmlmeSBtdWx0aXBsZSB0YWdzJyAnCkBAIC0xNDcsNyArMTQ3LDcgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBHUEdTTSAndmVyaWZ5IG11bHRpcGxlIHRhZ3MgeDUwOScgJwotCXRhZ3M9InNldmVudGgtc2lnbmVkIG5pbmV0aC1zaWduZWQteDUwOSIgJiYKKwl0YWdzPSJzZXZlbnRoLXNpZ25lZCBuaW50aC1zaWduZWQteDUwOSIgJiYKIAlmb3IgaSBpbiAkdGFncwogCWRvCiAJCWdpdCB2ZXJpZnktdGFnIC12IC0tcmF3ICRpIHx8IHJldHVybiAxCmRpZmYgLS1naXQgYS90L3Q3NTA4LXN0YXR1cy5zaCBiL3QvdDc1MDgtc3RhdHVzLnNoCmluZGV4IDRlNjc2Y2QuLjQ4MmNlMzUgMTAwNzU1Ci0tLSBhL3QvdDc1MDgtc3RhdHVzLnNoCisrKyBiL3QvdDc1MDgtc3RhdHVzLnNoCkBAIC0xNTcxLDcgKzE1NzEsNyBAQAogCXRlc3RfY21wIGV4cGVjdGVkX3dpdGhvdXRfc3Rhc2ggYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ25vIGFkZGl0aW9ubmFsIGluZm8gaWYgbm8gc3Rhc2ggZW50cmllcycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnbm8gYWRkaXRpb25hbCBpbmZvIGlmIG5vIHN0YXNoIGVudHJpZXMnICcKIAlnaXQgc3Rhc2ggY2xlYXIgJiYKIAlnaXQgLWMgc3RhdHVzLnNob3dTdGFzaD10cnVlIHN0YXR1cyA+YWN0dWFsICYmCiAJdGVzdF9jbXAgZXhwZWN0ZWRfd2l0aG91dF9zdGFzaCBhY3R1YWwKZGlmZiAtLWdpdCBhL3QvdDc1MTMtaW50ZXJwcmV0LXRyYWlsZXJzLnNoIGIvdC90NzUxMy1pbnRlcnByZXQtdHJhaWxlcnMuc2gKaW5kZXggZjE5MjAyYi4uNjYwMjc5MCAxMDA3NTUKLS0tIGEvdC90NzUxMy1pbnRlcnByZXQtdHJhaWxlcnMuc2gKKysrIGIvdC90NzUxMy1pbnRlcnByZXQtdHJhaWxlcnMuc2gKQEAgLTEyMzQsNyArMTIzNCw3IEBACiAJdGVzdF9jbXAgZXhwZWN0ZWQgYWN0dWFsCiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3dpdGggY29tbWFuZCB1c2luZyBjb21taXRlciBpbmZvcm1hdGlvbicgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAnd2l0aCBjb21tYW5kIHVzaW5nIGNvbW1pdHRlciBpbmZvcm1hdGlvbicgJwogCWdpdCBjb25maWcgdHJhaWxlci5zaWduLmlmRXhpc3RzICJhZGRJZkRpZmZlcmVudCIgJiYKIAlnaXQgY29uZmlnIHRyYWlsZXIuc2lnbi5jb21tYW5kICJlY2hvIFwiXCRHSVRfQ09NTUlUVEVSX05BTUUgPFwkR0lUX0NPTU1JVFRFUl9FTUFJTD5cIiIgJiYKIAljYXQgY29tcGxleF9tZXNzYWdlX2JvZHkgPmV4cGVjdGVkICYmCmRpZmYgLS1naXQgYS90L3Q3NTE5LXN0YXR1cy1mc21vbml0b3Iuc2ggYi90L3Q3NTE5LXN0YXR1cy1mc21vbml0b3Iuc2gKaW5kZXggOTk3ZDVmYi4uMWU0N2VkMiAxMDA3NTUKLS0tIGEvdC90NzUxOS1zdGF0dXMtZnNtb25pdG9yLnNoCisrKyBiL3QvdDc1MTktc3RhdHVzLWZzbW9uaXRvci5zaApAQCAtMjk0LDcgKzI5NCw3IEBACiAJZG9uZQogZG9uZQogCi0jIHRlc3QgdGhhdCBzcGxpdHRpbmcgdGhlIGluZGV4IGRvc24ndCBpbnRlcmZlcmUKKyMgdGVzdCB0aGF0IHNwbGl0dGluZyB0aGUgaW5kZXggZG9lc24ndCBpbnRlcmZlcmUKIHRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ3NwbGl0dGluZyB0aGUgaW5kZXggcmVzdWx0cyBpbiB0aGUgc2FtZSBzdGF0ZScgJwogCXdyaXRlX2ludGVncmF0aW9uX3NjcmlwdCAmJgogCWRpcnR5X3JlcG8gJiYKZGlmZiAtLWdpdCBhL3QvdDc1MTkvZnNtb25pdG9yLXdhdGNobWFuIGIvdC90NzUxOS9mc21vbml0b3Itd2F0Y2htYW4KaW5kZXggNTUxNGVkYy4uZDhlN2ExZSAxMDA3NTUKLS0tIGEvdC90NzUxOS9mc21vbml0b3Itd2F0Y2htYW4KKysrIGIvdC90NzUxOS9mc21vbml0b3Itd2F0Y2htYW4KQEAgLTIzLDcgKzIzLDggQEAKIAogaWYgKCR2ZXJzaW9uID09IDEpIHsKIAkjIGNvbnZlcnQgbmFub3NlY29uZHMgdG8gc2Vjb25kcwotCSR0aW1lID0gaW50ICR0aW1lIC8gMTAwMDAwMDAwMDsKKwkjIHN1YnRyYWN0IG9uZSBzZWNvbmQgdG8gbWFrZSBzdXJlIHdhdGNobWFuIHdpbGwgcmV0dXJuIGFsbCBjaGFuZ2VzCisJJHRpbWUgPSBpbnQgKCR0aW1lIC8gMTAwMDAwMDAwMCkgLSAxOwogfSBlbHNlIHsKIAlkaWUgIlVuc3VwcG9ydGVkIHF1ZXJ5LWZzbW9uaXRvciBob29rIHZlcnNpb24gJyR2ZXJzaW9uJy5cbiIgLgogCSAgICAiRmFsbGluZyBiYWNrIHRvIHNjYW5uaW5nLi4uXG4iOwpAQCAtNTQsMTggKzU1LDEyIEBACiAJIwogCSMgVG8gYWNjb21wbGlzaCB0aGlzLCB3ZSdyZSB1c2luZyB0aGUgInNpbmNlIiBnZW5lcmF0b3IgdG8gdXNlIHRoZQogCSMgcmVjZW5jeSBpbmRleCB0byBzZWxlY3QgY2FuZGlkYXRlIG5vZGVzIGFuZCAiZmllbGRzIiB0byBsaW1pdCB0aGUKLQkjIG91dHB1dCB0byBmaWxlIG5hbWVzIG9ubHkuIFRoZW4gd2UncmUgdXNpbmcgdGhlICJleHByZXNzaW9uIiB0ZXJtIHRvCi0JIyBmdXJ0aGVyIGNvbnN0cmFpbiB0aGUgcmVzdWx0cy4KLQkjCi0JIyBUaGUgY2F0ZWdvcnkgb2YgdHJhbnNpZW50IGZpbGVzIHRoYXQgd2Ugd2FudCB0byBpZ25vcmUgd2lsbCBoYXZlIGEKLQkjIGNyZWF0aW9uIGNsb2NrIChjY2xvY2spIG5ld2VyIHRoYW4gJHRpbWVfdCB2YWx1ZSBhbmQgd2lsbCBhbHNvIG5vdAotCSMgY3VycmVudGx5IGV4aXN0LgorCSMgb3V0cHV0IHRvIGZpbGUgbmFtZXMgb25seS4KIAogCW15ICRxdWVyeSA9IDw8IglFTkQiOwogCQlbInF1ZXJ5IiwgIiRnaXRfd29ya190cmVlIiwgewogCQkJInNpbmNlIjogJHRpbWUsCi0JCQkiZmllbGRzIjogWyJuYW1lIl0sCi0JCQkiZXhwcmVzc2lvbiI6IFsibm90IiwgWyJhbGxvZiIsIFsic2luY2UiLCAkdGltZSwgImNjbG9jayJdLCBbIm5vdCIsICJleGlzdHMiXV1dCisJCQkiZmllbGRzIjogWyJuYW1lIl0KIAkJfV0KIAlFTkQKIAkKZGlmZiAtLWdpdCBhL3QvdDkwMDEtc2VuZC1lbWFpbC5zaCBiL3QvdDkwMDEtc2VuZC1lbWFpbC5zaAppbmRleCA5OTdmOTBiLi5iZDk0Nzc5IDEwMDc1NQotLS0gYS90L3Q5MDAxLXNlbmQtZW1haWwuc2gKKysrIGIvdC90OTAwMS1zZW5kLWVtYWlsLnNoCkBAIC0xMjYwLDcgKzEyNjAsNyBAQAogCWdyZXAgIlRvOiBkZWZhdWx0QGV4YW1wbGUuY29tIiBzdGRvdXQKICcKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdzZW5kZW1haWwuaWRlbnRpdHk6IGJvb2wgaWRlbnRpdHkgdmFyaWFibGUgZXhpc3RhbmNlIG92ZXJyaWRlcycgJwordGVzdF9leHBlY3Rfc3VjY2VzcyAkUFJFUkVRICdzZW5kZW1haWwuaWRlbnRpdHk6IGJvb2wgaWRlbnRpdHkgdmFyaWFibGUgZXhpc3RlbmNlIG92ZXJyaWRlcycgJwogCWdpdCAtYyBzZW5kZW1haWwuaWRlbnRpdHk9Y2xvdWQgXAogCQktYyBzZW5kZW1haWwueG1haWxlcj10cnVlIFwKIAkJLWMgc2VuZGVtYWlsLmNsb3VkLnhtYWlsZXI9ZmFsc2UgXApkaWZmIC0tZ2l0IGEvdC90OTMwMS1mYXN0LWltcG9ydC1ub3Rlcy5zaCBiL3QvdDkzMDEtZmFzdC1pbXBvcnQtbm90ZXMuc2gKaW5kZXggZGFkYzcwYi4uY2EyMjNkYyAxMDA3NTUKLS0tIGEvdC90OTMwMS1mYXN0LWltcG9ydC1ub3Rlcy5zaAorKysgYi90L3Q5MzAxLWZhc3QtaW1wb3J0LW5vdGVzLnNoCkBAIC0yNzUsNyArMjc1LDcgQEAKICAgICB0aGlyZCBub3RlIGZvciBmaXJzdCBjb21taXQKIEVYUEVDVF9FTkQKIAotdGVzdF9leHBlY3Rfc3VjY2VzcyAnYWRkIGNvbmNhdGVudGF0aW9uIG5vdGVzIHdpdGggTSBjb21tYW5kJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdhZGQgY29uY2F0ZW5hdGlvbiBub3RlcyB3aXRoIE0gY29tbWFuZCcgJwogCiAJZ2l0IGZhc3QtaW1wb3J0IDxpbnB1dCAmJgogCUdJVF9OT1RFU19SRUY9cmVmcy9ub3Rlcy90ZXN0IGdpdCBsb2cgfCBncmVwICJeICAgICIgPiBhY3R1YWwgJiYKZGlmZiAtLWdpdCBhL3QvdDkzNTAtZmFzdC1leHBvcnQuc2ggYi90L3Q5MzUwLWZhc3QtZXhwb3J0LnNoCmluZGV4IDJlNGUyMTQuLmRiMDg0ZmUgMTAwNzU1Ci0tLSBhL3QvdDkzNTAtZmFzdC1leHBvcnQuc2gKKysrIGIvdC90OTM1MC1mYXN0LWV4cG9ydC5zaApAQCAtNTQxLDcgKzU0MSw3IEBACiAKICMgTkVFRFNXT1JLOiBub3QganVzdCBjaGVjayByZXR1cm4gc3RhdHVzLCBidXQgdmFsaWRhdGUgdGhlIG91dHB1dAogIyBOb3RlIHRoYXQgdGhlc2UgdGVzdHMgRE8gTk9USElORyBvdGhlciB0aGFuIHByaW50IGEgd2FybmluZyB0aGF0Ci0jIHRoZXkgYXJlIG9tbWl0dGluZyB0aGUgb25lIHRhZyB3ZSBhc2tlZCB0aGVtIHRvIGV4cG9ydCAoYmVjYXVzZSB0aGUKKyMgdGhleSBhcmUgb21pdHRpbmcgdGhlIG9uZSB0YWcgd2UgYXNrZWQgdGhlbSB0byBleHBvcnQgKGJlY2F1c2UgdGhlCiAjIHRhZ3MgcmVzb2x2ZSB0byBhIHRyZWUpLiAgVGhleSBleGlzdCBqdXN0IHRvIG1ha2Ugc3VyZSB3ZSBkbyBub3QKICMgYWJvcnQgYnV0IGluc3RlYWQganVzdCB3YXJuLgogdGVzdF9leHBlY3Rfc3VjY2VzcyAndHJlZV90YWctb2JqJyAgICAnZ2l0IGZhc3QtZXhwb3J0IHRyZWVfdGFnLW9iaicKZGlmZiAtLWdpdCBhL3QvdDk4MDktZ2l0LXA0LWNsaWVudC12aWV3LnNoIGIvdC90OTgwOS1naXQtcDQtY2xpZW50LXZpZXcuc2gKaW5kZXggM2NmZjFmYy4uOWM5NzEwZCAxMDA3NTUKLS0tIGEvdC90OTgwOS1naXQtcDQtY2xpZW50LXZpZXcuc2gKKysrIGIvdC90OTgwOS1naXQtcDQtY2xpZW50LXZpZXcuc2gKQEAgLTQwNyw3ICs0MDcsNyBAQAogJwogCiAjCi0jIFdoYXQgaGFwcGVucyB3aGVuIHR3byBmaWxlcyBvZiB0aGUgc2FtZSBuYW1lIGFyZSBvdmVybGF5ZWQgdG9nZXRoZXI/CisjIFdoYXQgaGFwcGVucyB3aGVuIHR3byBmaWxlcyBvZiB0aGUgc2FtZSBuYW1lIGFyZSBvdmVybGFpZCB0b2dldGhlcj8KICMgVGhlIGxhc3QtbGlzdGVkIGZpbGUgc2hvdWxkIHRha2UgcHJlZmVyZW5jZS4KICMKICMgLy9kZXBvdApkaWZmIC0tZ2l0IGEvdC90OTkwMi1jb21wbGV0aW9uLnNoIGIvdC90OTkwMi1jb21wbGV0aW9uLnNoCmluZGV4IDU0ZjhjZTEuLmVjM2VjY2YgMTAwNzU1Ci0tLSBhL3QvdDk5MDItY29tcGxldGlvbi5zaAorKysgYi90L3Q5OTAyLWNvbXBsZXRpb24uc2gKQEAgLTM3OCw3ICszNzgsNyBAQAogJwogCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0ZGlyIC0gcmV0dXJucyBlcnJvciB3aGVuIGNhbnQgZmluZCByZXBvJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdGRpciAtIHJldHVybnMgZXJyb3Igd2hlbiBjYW5ub3QgZmluZCByZXBvJyAnCiAJKAogCQlfX2dpdF9kaXI9Im5vbi1leGlzdGluZyIgJiYKIAkJdGVzdF9tdXN0X2ZhaWwgX19naXRkaXIgPiIkYWN0dWFsIgpAQCAtOTQ1LDcgKzk0NSw3IEBACiAJcm0gLWYgLmdpdC9GRVRDSF9IRUFECiAnCiAKLXRlc3RfZXhwZWN0X3N1Y2Nlc3MgJ19fZ2l0X3JlZnMgLSBkb250IGZpbHRlciByZWZzIHVubGVzcyB0b2xkIHNvJyAnCit0ZXN0X2V4cGVjdF9zdWNjZXNzICdfX2dpdF9yZWZzIC0gZG8gbm90IGZpbHRlciByZWZzIHVubGVzcyB0b2xkIHNvJyAnCiAJY2F0ID5leHBlY3RlZCA8PC1FT0YgJiYKIAlIRUFECiAJbWFzdGVyCkBAIC0xMjU3LDcgKzEyNTcsNyBAQAogCQkjIEluIHRoZSBmb2xsb3dpbmcgdGVzdHMgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdlIG9ubHkKIAkJIyBjYXJlIGFib3V0IGhvdyBfX2dpdF9jb21wbGV0ZV9pbmRleF9maWxlKCkgZGVhbHMgd2l0aAogCQkjIHVudXN1YWwgY2hhcmFjdGVycyBpbiBwYXRoIG5hbWVzLiAgQnkgcmVxdWVzdGluZyBvbmx5Ci0JCSMgdW50cmFja2VkIGZpbGVzIHdlIGRvbnQgaGF2ZSB0byBib3RoZXIgYWRkaW5nIGFueQorCQkjIHVudHJhY2tlZCBmaWxlcyB3ZSBkbyBub3QgaGF2ZSB0byBib3RoZXIgYWRkaW5nIGFueQogCQkjIHBhdGhzIHRvIHRoZSBpbmRleCBpbiB0aG9zZSB0ZXN0cy4KIAkJX19naXRfY29tcGxldGVfaW5kZXhfZmlsZSAtLW90aGVycyAmJgogCQlwcmludF9jb21wCkBAIC0xNTQ4LDcgKzE1NDgsMTAgQEAKICcKIAogdGVzdF9leHBlY3Rfc3VjY2VzcyBQRVJMICdzZW5kLWVtYWlsJyAnCi0JdGVzdF9jb21wbGV0aW9uICJnaXQgc2VuZC1lbWFpbCAtLWNvdiIgIi0tY292ZXItbGV0dGVyICIgJiYKKwl0ZXN0X2NvbXBsZXRpb24gImdpdCBzZW5kLWVtYWlsIC0tY292IiA8PC1cRU9GICYmCisJLS1jb3Zlci1mcm9tLWRlc2NyaXB0aW9uPVoKKwktLWNvdmVyLWxldHRlciBaCisJRU9GCiAJdGVzdF9jb21wbGV0aW9uICJnaXQgc2VuZC1lbWFpbCBtYSIgIm1hc3RlciAiCiAnCiAKZGlmZiAtLWdpdCBhL3QvdGVzdC1saWIuc2ggYi90L3Rlc3QtbGliLnNoCmluZGV4IGUwNmZhMDIuLjQ2YzQ0NDAgMTAwNjQ0Ci0tLSBhL3QvdGVzdC1saWIuc2gKKysrIGIvdC90ZXN0LWxpYi5zaApAQCAtNDA0LDkgKzQwNCwxMyBAQAogdW5zZXQgWERHX0NBQ0hFX0hPTUUKIHVuc2V0IFhER19DT05GSUdfSE9NRQogdW5zZXQgR0lUUEVSTExJQgotR0lUX0FVVEhPUl9FTUFJTD1hdXRob3JAZXhhbXBsZS5jb20KK1RFU1RfQVVUSE9SX0xPQ0FMTkFNRT1hdXRob3IKK1RFU1RfQVVUSE9SX0RPTUFJTj1leGFtcGxlLmNvbQorR0lUX0FVVEhPUl9FTUFJTD0ke1RFU1RfQVVUSE9SX0xPQ0FMTkFNRX1AJHtURVNUX0FVVEhPUl9ET01BSU59CiBHSVRfQVVUSE9SX05BTUU9J0EgVSBUaG9yJwotR0lUX0NPTU1JVFRFUl9FTUFJTD1jb21taXR0ZXJAZXhhbXBsZS5jb20KK1RFU1RfQ09NTUlUVEVSX0xPQ0FMTkFNRT1jb21taXR0ZXIKK1RFU1RfQ09NTUlUVEVSX0RPTUFJTj1leGFtcGxlLmNvbQorR0lUX0NPTU1JVFRFUl9FTUFJTD0ke1RFU1RfQ09NTUlUVEVSX0xPQ0FMTkFNRX1AJHtURVNUX0NPTU1JVFRFUl9ET01BSU59CiBHSVRfQ09NTUlUVEVSX05BTUU9J0MgTyBNaXR0ZXInCiBHSVRfTUVSR0VfVkVSQk9TSVRZPTUKIEdJVF9NRVJHRV9BVVRPRURJVD1ubwpkaWZmIC0tZ2l0IGEvdGFnLmMgYi90YWcuYwppbmRleCBiZmEwZTMxLi43MWI1NDQ0IDEwMDY0NAotLS0gYS90YWcuYworKysgYi90YWcuYwpAQCAtMTQxLDcgKzE0MSwxNiBAQAogCiAJaWYgKGl0ZW0tPm9iamVjdC5wYXJzZWQpCiAJCXJldHVybiAwOwotCWl0ZW0tPm9iamVjdC5wYXJzZWQgPSAxOworCisJaWYgKGl0ZW0tPnRhZykgeworCQkvKgorCQkgKiBQcmVzdW1hYmx5IGxlZnQgb3ZlciBmcm9tIGEgcHJldmlvdXMgZmFpbGVkIHBhcnNlOworCQkgKiBjbGVhciBpdCBvdXQgaW4gcHJlcGFyYXRpb24gZm9yIHJlLXBhcnNpbmcgKHdlJ2xsIHByb2JhYmx5CisJCSAqIGhpdCB0aGUgc2FtZSBlcnJvciwgd2hpY2ggbGV0cyB1cyB0ZWxsIG91ciBjdXJyZW50IGNhbGxlcgorCQkgKiBhYm91dCB0aGUgcHJvYmxlbSkuCisJCSAqLworCQlGUkVFX0FORF9OVUxMKGl0ZW0tPnRhZyk7CisJfQogCiAJaWYgKHNpemUgPCB0aGVfaGFzaF9hbGdvLT5oZXhzeiArIDI0KQogCQlyZXR1cm4gLTE7CkBAIC0xNjcsMTAgKzE3NiwxNSBAQAogCX0gZWxzZSBpZiAoIXN0cmNtcCh0eXBlLCB0YWdfdHlwZSkpIHsKIAkJaXRlbS0+dGFnZ2VkID0gKHN0cnVjdCBvYmplY3QgKilsb29rdXBfdGFnKHIsICZvaWQpOwogCX0gZWxzZSB7Ci0JCWVycm9yKCJVbmtub3duIHR5cGUgJXMiLCB0eXBlKTsKLQkJaXRlbS0+dGFnZ2VkID0gTlVMTDsKKwkJcmV0dXJuIGVycm9yKCJ1bmtub3duIHRhZyB0eXBlICclcycgaW4gJXMiLAorCQkJICAgICB0eXBlLCBvaWRfdG9faGV4KCZpdGVtLT5vYmplY3Qub2lkKSk7CiAJfQogCisJaWYgKCFpdGVtLT50YWdnZWQpCisJCXJldHVybiBlcnJvcigiYmFkIHRhZyBwb2ludGVyIHRvICVzIGluICVzIiwKKwkJCSAgICAgb2lkX3RvX2hleCgmb2lkKSwKKwkJCSAgICAgb2lkX3RvX2hleCgmaXRlbS0+b2JqZWN0Lm9pZCkpOworCiAJaWYgKGJ1ZnB0ciArIDQgPCB0YWlsICYmIHN0YXJ0c193aXRoKGJ1ZnB0ciwgInRhZyAiKSkKIAkJOyAJCS8qIGdvb2QgKi8KIAllbHNlCkBAIC0xODcsNiArMjAxLDcgQEAKIAllbHNlCiAJCWl0ZW0tPmRhdGUgPSAwOwogCisJaXRlbS0+b2JqZWN0LnBhcnNlZCA9IDE7CiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL3RlbXBsYXRlcy9ob29rcy0tZnNtb25pdG9yLXdhdGNobWFuLnNhbXBsZSBiL3RlbXBsYXRlcy9ob29rcy0tZnNtb25pdG9yLXdhdGNobWFuLnNhbXBsZQppbmRleCBlNjczYmIzLi5lZjk0ZmEyIDEwMDc1NQotLS0gYS90ZW1wbGF0ZXMvaG9va3MtLWZzbW9uaXRvci13YXRjaG1hbi5zYW1wbGUKKysrIGIvdGVtcGxhdGVzL2hvb2tzLS1mc21vbml0b3Itd2F0Y2htYW4uc2FtcGxlCkBAIC0yMiw3ICsyMiw4IEBACiAKIGlmICgkdmVyc2lvbiA9PSAxKSB7CiAJIyBjb252ZXJ0IG5hbm9zZWNvbmRzIHRvIHNlY29uZHMKLQkkdGltZSA9IGludCAkdGltZSAvIDEwMDAwMDAwMDA7CisJIyBzdWJ0cmFjdCBvbmUgc2Vjb25kIHRvIG1ha2Ugc3VyZSB3YXRjaG1hbiB3aWxsIHJldHVybiBhbGwgY2hhbmdlcworCSR0aW1lID0gaW50ICgkdGltZSAvIDEwMDAwMDAwMDApIC0gMTsKIH0gZWxzZSB7CiAJZGllICJVbnN1cHBvcnRlZCBxdWVyeS1mc21vbml0b3IgaG9vayB2ZXJzaW9uICckdmVyc2lvbicuXG4iIC4KIAkgICAgIkZhbGxpbmcgYmFjayB0byBzY2FubmluZy4uLlxuIjsKQEAgLTUzLDE4ICs1NCwxMiBAQAogCSMKIAkjIFRvIGFjY29tcGxpc2ggdGhpcywgd2UncmUgdXNpbmcgdGhlICJzaW5jZSIgZ2VuZXJhdG9yIHRvIHVzZSB0aGUKIAkjIHJlY2VuY3kgaW5kZXggdG8gc2VsZWN0IGNhbmRpZGF0ZSBub2RlcyBhbmQgImZpZWxkcyIgdG8gbGltaXQgdGhlCi0JIyBvdXRwdXQgdG8gZmlsZSBuYW1lcyBvbmx5LiBUaGVuIHdlJ3JlIHVzaW5nIHRoZSAiZXhwcmVzc2lvbiIgdGVybSB0bwotCSMgZnVydGhlciBjb25zdHJhaW4gdGhlIHJlc3VsdHMuCi0JIwotCSMgVGhlIGNhdGVnb3J5IG9mIHRyYW5zaWVudCBmaWxlcyB0aGF0IHdlIHdhbnQgdG8gaWdub3JlIHdpbGwgaGF2ZSBhCi0JIyBjcmVhdGlvbiBjbG9jayAoY2Nsb2NrKSBuZXdlciB0aGFuICR0aW1lX3QgdmFsdWUgYW5kIHdpbGwgYWxzbyBub3QKLQkjIGN1cnJlbnRseSBleGlzdC4KKwkjIG91dHB1dCB0byBmaWxlIG5hbWVzIG9ubHkuCiAKIAlteSAkcXVlcnkgPSA8PCIJRU5EIjsKIAkJWyJxdWVyeSIsICIkZ2l0X3dvcmtfdHJlZSIsIHsKIAkJCSJzaW5jZSI6ICR0aW1lLAotCQkJImZpZWxkcyI6IFsibmFtZSJdLAotCQkJImV4cHJlc3Npb24iOiBbIm5vdCIsIFsiYWxsb2YiLCBbInNpbmNlIiwgJHRpbWUsICJjY2xvY2siXSwgWyJub3QiLCAiZXhpc3RzIl1dXQorCQkJImZpZWxkcyI6IFsibmFtZSJdCiAJCX1dCiAJRU5ECiAKZGlmZiAtLWdpdCBhL3RyYWNlMi90cjJfc2lkLmMgYi90cmFjZTIvdHIyX3NpZC5jCmluZGV4IDY5NDhmZDQuLmRjNmU3NWUgMTAwNjQ0Ci0tLSBhL3RyYWNlMi90cjJfc2lkLmMKKysrIGIvdHJhY2UyL3RyMl9zaWQuYwpAQCAtMTksNyArMTksNyBAQAogICogICAgIkg8Zmlyc3RfOF9jaGFyc19vZl9zaGExX29mX2hvc3RuYW1lPiIKICAqICAgICJMb2NhbGhvc3QiIHdoZW4gbm8gaG9zdG5hbWUuCiAgKgotICogd2hlcmUgPHByb2Nlc3M+IGlzIGEgOSBjaGFyYWN0ZXIgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGxlYXN0IHNpZ25pZmNhbnQKKyAqIHdoZXJlIDxwcm9jZXNzPiBpcyBhIDkgY2hhcmFjdGVyIHN0cmluZyBjb250YWluaW5nIHRoZSBsZWFzdCBzaWduaWZpY2FudAogICogMzIgYml0cyBpbiB0aGUgcHJvY2Vzcy1pZC4KICAqICAgICJQPHBpZD4iCiAgKiAoVGhpcyBpcyBhbiBhYnJpYnJhcnkgY2hvaWNlLiAgT24gbW9zdCBzeXN0ZW1zIHBpZF90IGlzIGEgMzIgYml0IHZhbHVlLApkaWZmIC0tZ2l0IGEvdHJhY2UyL3RyMl90Z3RfcGVyZi5jIGIvdHJhY2UyL3RyMl90Z3RfcGVyZi5jCmluZGV4IGZmYWM4MDIuLmE4MDE4ZjEgMTAwNjQ0Ci0tLSBhL3RyYWNlMi90cjJfdGd0X3BlcmYuYworKysgYi90cmFjZTIvdHIyX3RndF9wZXJmLmMKQEAgLTI2LDEyICsyNiw5IEBACiAjZGVmaW5lIFRSMkZNVF9QRVJGX1JFUE9fV0lEVEggKDMpCiAjZGVmaW5lIFRSMkZNVF9QRVJGX0NBVEVHT1JZX1dJRFRIICgxMikKIAotI2RlZmluZSBUUjJfRE9UU19CVUZGRVJfU0laRSAoMTAwKQogI2RlZmluZSBUUjJfSU5ERU5UICgyKQogI2RlZmluZSBUUjJfSU5ERU5UX0xFTkdUSChjdHgpICgoKGN0eCktPm5yX29wZW5fcmVnaW9ucyAtIDEpICogVFIyX0lOREVOVCkKIAotc3RhdGljIHN0cnVjdCBzdHJidWYgZG90cyA9IFNUUkJVRl9JTklUOwotCiBzdGF0aWMgaW50IGZuX2luaXQodm9pZCkKIHsKIAlpbnQgd2FudCA9IHRyMl9kc3RfdHJhY2Vfd2FudCgmdHIyZHN0X3BlcmYpOwpAQCAtNDEsOCArMzgsNiBAQAogCWlmICghd2FudCkKIAkJcmV0dXJuIHdhbnQ7CiAKLQlzdHJidWZfYWRkY2hhcnMoJmRvdHMsICcuJywgVFIyX0RPVFNfQlVGRkVSX1NJWkUpOwotCiAJYnJpZWYgPSB0cjJfc3lzZW52X2dldChUUjJfU1lTRU5WX1BFUkZfQlJJRUYpOwogCWlmIChicmllZiAmJiAqYnJpZWYgJiYKIAkgICAgKCh3YW50X2JyaWVmID0gZ2l0X3BhcnNlX21heWJlX2Jvb2woYnJpZWYpKSAhPSAtMSkpCkBAIC01NCw4ICs0OSw2IEBACiBzdGF0aWMgdm9pZCBmbl90ZXJtKHZvaWQpCiB7CiAJdHIyX2RzdF90cmFjZV9kaXNhYmxlKCZ0cjJkc3RfcGVyZik7Ci0KLQlzdHJidWZfcmVsZWFzZSgmZG90cyk7CiB9CiAKIC8qCkBAIC0xMzgsMTQgKzEzMSw4IEBACiAJc3RyYnVmX2FkZGYoYnVmLCAiJS0qLipzIHwgIiwgVFIyRk1UX1BFUkZfQ0FURUdPUllfV0lEVEgsCiAJCSAgICBUUjJGTVRfUEVSRl9DQVRFR09SWV9XSURUSCwgKGNhdGVnb3J5ID8gY2F0ZWdvcnkgOiAiIikpOwogCi0JaWYgKGN0eC0+bnJfb3Blbl9yZWdpb25zID4gMCkgewotCQlpbnQgbGVuX2luZGVudCA9IFRSMl9JTkRFTlRfTEVOR1RIKGN0eCk7Ci0JCXdoaWxlIChsZW5faW5kZW50ID4gZG90cy5sZW4pIHsKLQkJCXN0cmJ1Zl9hZGRidWYoYnVmLCAmZG90cyk7Ci0JCQlsZW5faW5kZW50IC09IGRvdHMubGVuOwotCQl9Ci0JCXN0cmJ1Zl9hZGRmKGJ1ZiwgIiUuKnMiLCBsZW5faW5kZW50LCBkb3RzLmJ1Zik7Ci0JfQorCWlmIChjdHgtPm5yX29wZW5fcmVnaW9ucyA+IDApCisJCXN0cmJ1Zl9hZGRjaGFycyhidWYsICcuJywgVFIyX0lOREVOVF9MRU5HVEgoY3R4KSk7CiB9CiAKIHN0YXRpYyB2b2lkIHBlcmZfaW9fd3JpdGVfZmwoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmV2ZW50X25hbWUsCmRpZmYgLS1naXQgYS91bnBhY2stdHJlZXMuYyBiL3VucGFjay10cmVlcy5jCmluZGV4IDMzZWE3ODEuLjI4Y2JkMTkgMTAwNjQ0Ci0tLSBhL3VucGFjay10cmVlcy5jCisrKyBiL3VucGFjay10cmVlcy5jCkBAIC0yNzUsOSArMjc1LDkgQEAKIH0KIAogLyoKLSAqIFByZWZvcm0gdGhlIGxvYWRpbmcgb2YgdGhlIHJlcG9zaXRvcnkncyBnaXRtb2R1bGVzIGZpbGUuICBUaGlzIGZ1bmN0aW9uIGlzCisgKiBQZXJmb3JtIHRoZSBsb2FkaW5nIG9mIHRoZSByZXBvc2l0b3J5J3MgZ2l0bW9kdWxlcyBmaWxlLiAgVGhpcyBmdW5jdGlvbiBpcwogICogdXNlZCBieSAnY2hlY2tfdXBkYXRlKCknIHRvIHBlcmZvcm0gbG9hZGluZyBvZiB0aGUgZ2l0bW9kdWxlcyBmaWxlIGluIHR3bwotICogZGlmZmVybnQgc2l0dWF0aW9uczoKKyAqIGRpZmZlcmVudCBzaXR1YXRpb25zOgogICogKDEpIGJlZm9yZSByZW1vdmluZyBlbnRyaWVzIGZyb20gdGhlIHdvcmtpbmcgdHJlZSBpZiB0aGUgZ2l0bW9kdWxlcyBmaWxlIGhhcwogICogICAgIGJlZW4gbWFya2VkIGZvciByZW1vdmFsLiAgVGhpcyBzaXR1YXRpb24gaXMgc3BlY2lmaWVkIGJ5ICdzdGF0ZScgPT0gTlVMTC4KICAqICgyKSBiZWZvcmUgY2hlY2tpbmcgb3V0IGVudHJpZXMgdG8gdGhlIHdvcmtpbmcgdHJlZSBpZiB0aGUgZ2l0bW9kdWxlcyBmaWxlCmRpZmYgLS1naXQgYS91cmwuYyBiL3VybC5jCmluZGV4IGUzNGU1ZTcuLmUwNGJkNjAgMTAwNjQ0Ci0tLSBhL3VybC5jCisrKyBiL3VybC5jCkBAIC01LDcgKzUsNyBAQAogewogCS8qCiAJICogVGhlIHNldCBvZiB2YWxpZCBVUkwgc2NoZW1lcywgYXMgcGVyIFNURDY2IChSRkMzOTg2KSBpcwotCSAqICdbQS1aYS16XVtBLVphLXowLTkrLi1dKicuIEJ1dCB1c2Ugc2lnaHRseSBsb29zZXIgY2hlY2sKKwkgKiAnW0EtWmEtel1bQS1aYS16MC05Ky4tXSonLiBCdXQgdXNlIHNsaWdodGx5IGxvb3NlciBjaGVjawogCSAqIG9mICdbQS1aYS16MC05XVtBLVphLXowLTkrLi1dKicgYmVjYXVzZSBlYXJsaWVyIHZlcnNpb24KIAkgKiBvZiBjaGVjayB1c2VkICdbQS1aYS16MC05XSsnIHNvIG5vdCB0byBicmVhayBhbnkgcmVtb3RlCiAJICogaGVscGVycy4KZGlmZiAtLWdpdCBhL3VzYWdlLmMgYi91c2FnZS5jCmluZGV4IDJmZGIyMDAuLjU4ZmI1ZmYgMTAwNjQ0Ci0tLSBhL3VzYWdlLmMKKysrIGIvdXNhZ2UuYwpAQCAtOSwxNCArOSwyNiBAQAogdm9pZCB2cmVwb3J0Zihjb25zdCBjaGFyICpwcmVmaXgsIGNvbnN0IGNoYXIgKmVyciwgdmFfbGlzdCBwYXJhbXMpCiB7CiAJY2hhciBtc2dbNDA5Nl07Ci0JY2hhciAqcDsKKwljaGFyICpwLCAqcGVuZCA9IG1zZyArIHNpemVvZihtc2cpOworCXNpemVfdCBwcmVmaXhfbGVuID0gc3RybGVuKHByZWZpeCk7CiAKLQl2c25wcmludGYobXNnLCBzaXplb2YobXNnKSwgZXJyLCBwYXJhbXMpOwotCWZvciAocCA9IG1zZzsgKnA7IHArKykgeworCWlmIChzaXplb2YobXNnKSA8PSBwcmVmaXhfbGVuKSB7CisJCWZwcmludGYoc3RkZXJyLCAiQlVHISEhIHRvbyBsb25nIGEgcHJlZml4ICclcydcbiIsIHByZWZpeCk7CisJCWFib3J0KCk7CisJfQorCW1lbWNweShtc2csIHByZWZpeCwgcHJlZml4X2xlbik7CisJcCA9IG1zZyArIHByZWZpeF9sZW47CisJaWYgKHZzbnByaW50ZihwLCBwZW5kIC0gcCwgZXJyLCBwYXJhbXMpIDwgMCkKKwkJKnAgPSAnXDAnOyAvKiB2c25wcmludGYoKSBmYWlsZWQsIGNsaXAgYXQgcHJlZml4ICovCisKKwlmb3IgKDsgcCAhPSBwZW5kIC0gMSAmJiAqcDsgcCsrKSB7CiAJCWlmIChpc2NudHJsKCpwKSAmJiAqcCAhPSAnXHQnICYmICpwICE9ICdcbicpCiAJCQkqcCA9ICc/JzsKIAl9Ci0JZnByaW50ZihzdGRlcnIsICIlcyVzXG4iLCBwcmVmaXgsIG1zZyk7CisKKwkqKHArKykgPSAnXG4nOyAvKiB3ZSBubyBsb25nZXIgbmVlZCBhIE5VTCAqLworCWZmbHVzaChzdGRlcnIpOworCXdyaXRlX2luX2Z1bGwoMiwgbXNnLCBwIC0gbXNnKTsKIH0KIAogc3RhdGljIE5PUkVUVVJOIHZvaWQgdXNhZ2VfYnVpbHRpbihjb25zdCBjaGFyICplcnIsIHZhX2xpc3QgcGFyYW1zKQpkaWZmIC0tZ2l0IGEvdXNlcmRpZmYuYyBiL3VzZXJkaWZmLmMKaW5kZXggZTE4N2QzNS4uNTc3MDUzYyAxMDA2NDQKLS0tIGEvdXNlcmRpZmYuYworKysgYi91c2VyZGlmZi5jCkBAIC0zMiw2ICszMiwxOCBAQAogCSAvKiBQcm9wZXJ0eSBuYW1lcyBhbmQgbWF0aCBvcGVyYXRvcnMgKi8KIAkgIlthLXpBLVowLTksLl8rPyMtXSsiCiAJICJ8Wy0rKi8lJl58IX5dfD4+fDw8fCYmfFxcfFxcfCIpLAorUEFUVEVSTlMoImVsaXhpciIsCisJICJeWyBcdF0qKChkZWYobWFjcm98bW9kdWxlfGltcGx8cHJvdG9jb2x8cCk/fHRlc3QpWyBcdF0uKikkIiwKKwkgLyogQXRvbXMsIG5hbWVzLCBhbmQgbW9kdWxlIGF0dHJpYnV0ZXMgKi8KKwkgInxbQDpdP1thLXpBLVowLTlAXz8hXSsiCisJIC8qIE51bWJlcnMgd2l0aCBzcGVjaWZpYyBiYXNlICovCisJICJ8Wy0rXT8wW3hvYl1bMC05YS1mQS1GXSsiCisJIC8qIE51bWJlcnMgKi8KKwkgInxbLStdP1swLTldWzAtOV8uXSooW2VFXVstK10/WzAtOV9dKyk/IgorCSAvKiBPcGVyYXRvcnMgYW5kIGF0b21zIHRoYXQgcmVwcmVzZW50IHRoZW0gKi8KKwkgInw6PyhcXCtcXCt8LS18XFwuXFwufH5+fnw8PnxcXF5cXF5cXF58PD9cXHw+fDw8PD98Pj8+Pnw8PD9+fH4+Pz58PH4+fDw9fD49fD09PT98IT09P3w9fnwmJiY/fFxcfFxcfFxcfD98PT58PC18XFxcXFxcXFx8LT4pIgorCSAvKiBOb3QgcmVhbCBvcGVyYXRvcnMsIGJ1dCBzaG91bGQgYmUgZ3JvdXBlZCAqLworCSAifDo/JVtBLVphLXowLTlfLl1cXHtcXH0/IiksCiBJUEFUVEVSTigiZm9ydHJhbiIsCiAJICIhXihbQypdfFsgXHRdKiEpXG4iCiAJICIhXlsgXHRdKk1PRFVMRVsgXHRdK1BST0NFRFVSRVsgXHRdXG4iCmRpZmYgLS1naXQgYS91dGY4LmMgYi91dGY4LmMKaW5kZXggNWM4ZjE1MS4uNWIzOTM2MSAxMDA2NDQKLS0tIGEvdXRmOC5jCisrKyBiL3V0ZjguYwpAQCAtNDExLDExICs0MTEsMTAgQEAKICAqLwogc3RhdGljIGludCBzYW1lX3V0Zl9lbmNvZGluZyhjb25zdCBjaGFyICpzcmMsIGNvbnN0IGNoYXIgKmRzdCkKIHsKLQlpZiAoaXN0YXJ0c193aXRoKHNyYywgInV0ZiIpICYmIGlzdGFydHNfd2l0aChkc3QsICJ1dGYiKSkgewotCQkvKiBzcmNbM10gb3IgZHN0WzNdIG1pZ2h0IGJlICdcMCcgKi8KLQkJaW50IGkgPSAoc3JjWzNdID09ICctJyA/IDQgOiAzKTsKLQkJaW50IGogPSAoZHN0WzNdID09ICctJyA/IDQgOiAzKTsKLQkJcmV0dXJuICFzdHJjYXNlY21wKHNyYytpLCBkc3Qraik7CisJaWYgKHNraXBfaXByZWZpeChzcmMsICJ1dGYiLCAmc3JjKSAmJiBza2lwX2lwcmVmaXgoZHN0LCAidXRmIiwgJmRzdCkpIHsKKwkJc2tpcF9wcmVmaXgoc3JjLCAiLSIsICZzcmMpOworCQlza2lwX3ByZWZpeChkc3QsICItIiwgJmRzdCk7CisJCXJldHVybiAhc3RyY2FzZWNtcChzcmMsIGRzdCk7CiAJfQogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEveGRpZmYtaW50ZXJmYWNlLmggYi94ZGlmZi1pbnRlcmZhY2UuaAppbmRleCBlZGU0MjQ2Li45M2RmMjY5IDEwMDY0NAotLS0gYS94ZGlmZi1pbnRlcmZhY2UuaAorKysgYi94ZGlmZi1pbnRlcmZhY2UuaApAQCAtNDQsNyArNDQsNyBAQAogICogQ29tcGFyZSB0aGUgc3RyaW5ncyBsMSB3aXRoIGwyIHdoaWNoIGFyZSBvZiBzaXplIHMxIGFuZCBzMiByZXNwZWN0aXZlbHkuCiAgKiBSZXR1cm5zIDEgaWYgdGhlIHN0cmluZ3MgYXJlIGRlZW1lZCBlcXVhbCwgMCBvdGhlcndpc2UuCiAgKiBUaGUgYGZsYWdzYCBnaXZlbiBhcyBYREZfV0hJVEVTUEFDRV9GTEFHUyBkZXRlcm1pbmUgaG93IHdoaXRlIHNwYWNlcwotICogYXJlIHRyZWF0ZWQgZm9yIHRoZSBjb21wYXJpc2lvbi4KKyAqIGFyZSB0cmVhdGVkIGZvciB0aGUgY29tcGFyaXNvbi4KICAqLwogaW50IHhkaWZmX2NvbXBhcmVfbGluZXMoY29uc3QgY2hhciAqbDEsIGxvbmcgczEsCiAJCQljb25zdCBjaGFyICpsMiwgbG9uZyBzMiwgbG9uZyBmbGFncyk7Cg==